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

关于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,那谁会先收到呢?


答案是,谁先动态注册谁先收到。并且,如果对同一个广播注册多次,以第一次注册的时间优先度为准
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值