2014-11-03 44 views
0

举个例子,这里有一个运行2个或更多应用程序的电话,调用onReceive()。 有Android的某种任务顺序来运行所有thouse @Overrides的有序序列?可能是,然后按照哪个顺序,应用程序的重要性?如果从几个应用程序调用onReceive覆盖,会发生什么情况?

应用1 &应用2:

应用1:

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

应用2:

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

可以定义意图使用的BroadcastReceiversandroid:priority属性的处理顺序。当意图可以被多个接收者处理时,Android会生成一个有序列表(基于每个接收者的优先级)并按顺序传递该意图。

所以你的情况,当你注册的接收器(通过registerReceiver(BroadcastReceiver receiver, IntentFilter filter),所有你需要做的就是分配更高的优先级(通过调用setPriority(int priority))在应用1的意图过滤器,而不是在应用2过滤器,以确保App1在App2之前收到意图

还有一个旧的article in the Android developers blog,它提供了有关如何有效实现此机制的示例。

相关问题