例如,此处的一些示例是运行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
}
};
答案 0 :(得分:1)
您可以使用BroadcastReceivers
的{{3}}属性定义处理意图的顺序。当一个意图可以由多个接收者处理时,Android会生成一个有序列表(基于每个接收者的优先级)并按顺序传递意图。
因此,在您的情况下,当您注册接收者时(通过registerReceiver(BroadcastReceiver receiver, IntentFilter filter)
,您所要做的就是为App1中的intent过滤器分配更高的优先级(通过调用setPriority(int priority)
)而不是App2中的过滤器,以确保App1在App2之前收到意图。
还有一个旧的android:priority,为您提供有关如何有效实施此机制的示例。