查看Android源代码时,我观察到了获取包含结果额外数据的Bundle的两种常用方法。BroadcastReceiver.getResultsExtra()与Intent.getExtras()
A.呼吁getResultsExtra()
private class StatusBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = getResultExtras(true);
}
}
B.呼吁intent.getExtras()
private class StatusBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
}
}
为什么你会选择通过另一种方法一种方法?是否有某些情况下优先于其他方法?它们是否相同?
所以,如果我不改变任何值,并且是只对阅读价值感兴趣,两者相当? – GrandAdmiral
啊,不。如果getResultExtras(bool)中的bool设置为true,那么您将获得前一个接收器发送的值(映射)(如果前一个映射为null,则返回新的空映射),如果设置为false,则返回空映射。而intent.getExtras()只有在使用'sendBroadcast(intent);'开始广播时设置的值。所以getResultExtras(bool)将不会有intent.getExtras()所具有的值! –