我很困惑:
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。