Is intent.getExtras.getInt() same as intent.getIntExtra()?



我很困惑:

intent.getExtras.getInt()intent.getIntExtra()相同吗?

如果我使用START_REDELIVER_INTENT启动服务是否包含在意图中?

我在重新启动崩溃的服务时得到了NullPointerException,我觉得这很奇怪。。。。

来自Intent源代码:

private Bundle mExtras;
// [...]
public int getIntExtra(String name, int defaultValue) {
    return mExtras == null ? defaultValue :
    mExtras.getInt(name, defaultValue);
}
public Bundle getExtras() {
    return (mExtras != null)
        ? new Bundle(mExtras)
       : null;
}

是的。除getExtras()可能返回null外,其他内容相同。

它们并不完全相同。正如您所发现的,如果intent.getExtras()返回null,则第一个变体将导致NPE。第二个变量进行自己的null检查,如果没有多余的值,则返回默认值。

我无法推测为什么你在没有看到更多代码的情况下没有得到预期的Extras。

最新更新