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

时间:2014-10-13 10:32:21

标签: android android-intent service extras

我很困惑:

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

如果我使用START_REDELIVER_INTENT启动我的服务,那么附加内容 被包含在意图中?

我重新启动崩溃的服务时得到NullPointerException,我觉得很奇怪......

2 个答案:

答案 0 :(得分:4)

来自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。

答案 1 :(得分:1)

它们并不完全相同。如您所知,如果intent.getExtras()返回null,则第一个变体将导致NPE。第二个变体执行自己的空值检查,如果不存在额外值,则返回默认值。

我无法推测为什么在没有看到更多代码的情况下没有获得预期的额外内容。