在查看 Android 源代码时,我观察到两种获取包含结果额外数据的 Bundle 的常用方法。
一个。调用 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();
}
}
为什么您会选择一种方法而不是另一种方法?在某些情况下,一种方法优于另一种方法吗?它们等价吗?
最佳答案
当您使用“Context.sendOrderedBroadcast”发送有序广播时,“BroadcastReceiver.getResultExtras”方法很有意义,因为您可以修改要发送到下一个广播接收器的结果集(请记住,当您发送有序广播时,接收器在同步数据中被调用,而不是普通广播“Context.sendBroadcast”的异步数据。考虑到这一点,假设您有 3 个接收器,并且您向它们发送了一个有序的广播(假设您将优先级设置为广播 1,然后是第一个),然后接收器 1 可以使用“BroadcastReceiver.getResultExtras”获取结果集"方法并添加一些值,当广播到达接收者 2 时,这些值将被接收者 2 看到,依此类推。 “Intent.getExtras()”只会为您提供广播接收器具有的 Intent 的额外值。
关于android - BroadcastReceiver.getResultsExtra() 与 Intent.getExtras(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085614/