【发布时间】:2014-10-13 10:32:20
【问题描述】:
我很困惑:
intent.getExtras.getInt() 和 intent.getIntExtra() 一样吗?
如果我使用START_REDELIVER_INTENT 启动我的服务,额外的
是否包含在意图中?
我在重新启动崩溃的服务时收到NullPointerException,我觉得这很奇怪....
【问题讨论】:
标签: android android-intent service extras
我很困惑:
intent.getExtras.getInt() 和 intent.getIntExtra() 一样吗?
如果我使用START_REDELIVER_INTENT 启动我的服务,额外的
是否包含在意图中?
我在重新启动崩溃的服务时收到NullPointerException,我觉得这很奇怪....
【问题讨论】:
标签: android android-intent service extras
来自 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。第二个变体进行自己的空值检查,如果额外的不存在,则返回默认值。
如果没有看到更多代码,我无法推测为什么您没有获得预期的 Extras。
【讨论】: