关于android的Ordered Broadcast的优先级问题
这里我们就要谈到Ordered Broadcast的 优先级问题
首先,利用 android:priority这个属性
一般,我们都会在AndroidManifest.xml 定义一个这样子的Recevider
这里priority就决定了那个程序会先接收到广播
<receiver android:name=".TomBroadcastReceiver">
<intent-filter android:priority="2147483647">
<action android:name="com.test.orderBCRecv"/>
</intent-filter>
</receiver>
这里,我们的 优先级是2147483647, Integer的最大值
问题是,如果几个程序的 优先级设置成一样的,系统如何决定。
答案是,最先安装最 优先级最高。
/
但是,在相同 优先级的情况下,动态注册Receiver的 优先级是比静态注册来的高的。
比如,同样是在2147483647的 优先级下,我动态注册一个Receiver,不管我程序比其他人的晚安装,我的 优先级是最高的。
IntentFilter localIntentFilter = new
IntentFilter("com.test.orderBCRecv");
localIntentFilter.addCategory(Intent.CATEGORY_DEFAULT);
localIntentFilter.setPriority(1000);
Log.v("MyBrocast.onReceive", "onCreate");
registerReceiver(bc, localIntentFilter);
同样的问题,如果几个程序用同样的优先级动态注册一个监听广播的receiver,那谁会先收到呢?
答案是,谁先动态注册谁先收到。并且,如果对同一个广播注册多次,以第一次注册的时间优先度为准