android - BroadcastReceiver.getResultsExtra() 与 Intent.getExtras()

标签 android android-intent android-broadcastreceiver

在查看 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/

相关文章:

android - AlarmManager 在 Oreo 及更高版本中关闭应用程序时触发

android - 不 protected 广播会导致应用程序启动时崩溃

java - 错误 :Execution failed for task

java - Java中finish()和super.finish()的区别?

android - 特定 fragment 中的 Snackbar

android - Qt 安卓 : Pressing "Done" does not hide the keyboard

android - 相机或图库 Intent 会破坏某些设备上的旧 Activity

android - 转弯多点路线导航 Google Maps Intent on Android

android - 让 googlemaps 接受本地 KML 文件?

android - 广播接收器在 Android 8 的前台服务中不起作用