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

Android intent.getExtras.getInt()与intent.getIntExtra()相同吗?,android,android-intent,service,extras,Android,Android Intent,Service,Extras,我很困惑: intent.getExtras.getInt()与intent.getIntExtra()相同吗 如果我使用start\u REDELIVER\u INTENT启动我的服务,附加服务 是否包含在意图中 重新启动崩溃的服务时,我得到了NullPointerException,我觉得很奇怪….它们不完全相同。正如您所发现的,如果intent.getExtras()返回null,第一个变量将导致NPE。第二个变量执行自己的空检查,如果不存在额外值,则返回默认值 我无法推测为什么您在没有看

我很困惑:

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

如果我使用
start\u REDELIVER\u INTENT
启动我的服务,附加服务 是否包含在意图中


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

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


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

来自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之外,其他内容都是一样的。

为了返回捆绑包的副本,原始的mExtras捆绑包仍然没有修改。我理解。虽然这是预期的行为,额外的得到重新交付以及重新启动服务?对的