优先级高的接收器先接收。
优先级相同,动态注册的广播接收器先于静态注册。
优先级相同,注册类型相同,先注册先接收。
所以要保证第一个动态注册就是最先接收者。Receiver一般注册在服务里,所以要保证服务开机第一个启动。
示例:
if(filter==null){ filter = new IntentFilter(ACTION); filter.setPriority(2147483647); } if(r==null){ r= new SmsReceiver(); } registerReceiver(r, filter);
其中2147483647为最大int型整数。有人说优先级最大为1000,这个可以看看源码,但最大整数很保险。
<receiver android:name=".SmsReceiver" > <intent-filter android:priority="2147483647"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>