您的位置:首页 > 移动开发 > Android开发

关于android的Ordered Broadcast的优先级问题

2013-06-11 22:03 369 查看



关于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);

[b]同样的问题,如果几个程序用同样的优先级动态注册一个监听广播的receiver,那谁会先收到呢?


答案是,谁先动态注册谁先收到。并且,如果对同一个广播注册多次,以第一次注册的时间优先度为准
[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: