当/如果onReceive覆盖从多个应用程序调用时会发生什么?

时间:2014-11-03 10:44:14

标签: android sms broadcastreceiver

例如,此处的一些示例是运行2个或更多应用的手机,呼叫onReceive()。 有没有android某种任务命令按顺序运行所有thouse @Overrides?可能是的,然后以什么顺序,app的重要性?

App1& App2的:

App1的:

  private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    String message = intent.getStringExtra("message");
    Log.d("receiver", "Got message: " + message);
  }
};

App2的:

  private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    String message = intent.getStringExtra("message");
    deleteMessageFromInbox(message); // or just something that can conflict other Instance
  }
};

1 个答案:

答案 0 :(得分:1)

您可以使用BroadcastReceivers的{​​{3}}属性定义处理意图的顺序。当一个意图可以由多个接收者处理时,Android会生成一个有序列表(基于每个接收者的优先级)并按顺序传递意图。

因此,在您的情况下,当您注册接收者时(通过registerReceiver(BroadcastReceiver receiver, IntentFilter filter),您所要做的就是为App1中的intent过滤器分配更高的优先级(通过调用setPriority(int priority))而不是App2中的过滤器,以确保App1在App2之前收到意图。

还有一个旧的android:priority,为您提供有关如何有效实施此机制的示例。