【问题标题】:How does a broadcast receiver work among activities?广播接收器如何在活动之间工作?
【发布时间】:2017-03-31 15:46:44
【问题描述】:

假设 A 、 B 、 C 、 D 和所有活动都注册到同一个广播接收器,我有多个活动。在发送广播消息时,活动将接收广播意图。它是按 A 、 B 、 C 、 D 还是随机的顺序排列的。

请告诉我,给我一些建议。

【问题讨论】:

  • 我从来没有这样做过,只是大声思考......一次只有 1 个活动处于活动状态,所以也许活动的活动会先得到通知?
  • 您阅读文档了吗? :developer.android.com/guide/components/broadcasts.html。特别适用于 sendOrderedBroadcast(Intent, String) 。所以我会说这取决于。您的问题没有提供需要明确的信息

标签: android android-broadcastreceiver activity-stack


【解决方案1】:

您无法控制它,因为系统会将这些操作分派给已注册的广播侦听器。您无法保证广播侦听器将被解雇的顺序。

除非它被订购广播。来自docs

sendOrderedBroadcast(Intent, String) 方法一次向一个接收者发送广播。当每个接收器依次执行时,它可以将结果传播给下一个接收器,或者它可以完全中止广播,这样它就不会被传递给其他接收器。可以通过匹配意图过滤器的 android:priority 属性控制运行的订单接收器;具有相同优先级的接收器将按任意顺序运行。

【讨论】:

  • 哦! ,谢谢大佬,我的疑惑解开了。是的,这将是非常随机的。我在想可能是 Activity Stack 将扮演这个角色,哪个 Activity 最先收到。
  • 正如我的评论所说:不清楚,有有序的广播
  • @HenningLuther,说得好。我自动假设普通广播。将编辑我的答案。谢谢。
【解决方案2】:

有可能订购广播。这取决于你是否是一个广播。如果您正在广播,请使用sendOrderedBroadcast(Intent, String) 并优先考虑您的接收者。如果其他人是广播员,您必须知道他是否正在发送命令。如果他没有,你就没有机会,否则你可以优先考虑你的接收器。

【讨论】:

    【解决方案3】:

    在android中发送Broadcast有三种方式。即 1.sendBroadcast 2.sendOrderedBroadcast 和 3.sendStickyBroadcast。这里你说的是sendBroadcast,所以它只会将广播发送到注册的广播接收器,而不管广播是按什么顺序注册的。

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多