android有序广播优先级和接收顺序

优先级高的接收器先接收。

优先级相同,动态注册的广播接收器先于静态注册。

优先级相同,注册类型相同,先注册先接收。

所以要保证第一个动态注册就是最先接收者。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>