一、標准廣播和有序廣播也很容易理解的。
標准廣播:
(1)通過sendBroadcast()方法發送
(2)通過異步方式發送,廣播接收者的執行順序是不明確的
有序廣播:
(1)通過sendOrderBroadcast()發送
(2)廣播接收者需要按照優先級依次執行
(3)可以使用setResultXXX()、getResultXXX()、abortBroadcast()方法
二、通過簡單例子來實現一下標准廣播和有序廣播
1、很簡單的例子,先看一下主布局。

2、主活動需要實現發送標准廣播和有序廣播,下面是主活動核心代碼。
MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction("com.thanlon.broadcastReceiverType");
switch (view.getId()) {
case R.id.order_send_btn://發送有序廣播,有序廣播通過優先級去
sendOrderedBroadcast(intent, null);
Log.d("Thanlon","發送了有序廣播");
break;
case R.id.disorder_send_btn://發送標准廣播
sendBroadcast(intent, null);
Log.d("Thanlon","發送了標准廣播");
break;
}
}
}
3、接收廣播的類。
這里寫了三個繼承了BroadcastReceiver的類來實現接收廣播:
MyBroadcastReveiver1.java:
public class MyBroadcastReveiver1 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Thanlon","MyBroadcastReveiver1接收到廣播");
}
}
MyBroadcastReveiver2.java:
public class MyBroadcastReveiver2 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Thanlon","MyBroadcastReveiver1接收到廣播");
}
}
MyBroadcastReveiver3.java:
public class MyBroadcastReveiver3 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Thanlon","MyBroadcastReveiver1接收到廣播");
}
}
4、注冊BroadcastReceiver
AndroidManifest.xml:(在<application>標簽里,<activity>結束標簽的下面添加如下代碼)
<receiver android:name=".MyBroadcastReveiver1">
<!--優先級通過取值來判斷優先級先后,優先級取值為-1000~1000,值越大優先級越高,越先接收廣播;如果優先級一樣,則哪個廣播先注冊就先執行-->
<intent-filter android:priority="1">
<action android:name="com.thanlon.broadcastReceiverType" />
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReveiver2">
<intent-filter android:priority="2">
<action android:name="com.thanlon.broadcastReceiverType" />
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReveiver3">
<intent-filter android:priority="3">
<action android:name="com.thanlon.broadcastReceiverType" />
</intent-filter>
</receiver>
當發送有序廣播的時,要根據優先級來判斷哪個廣播先執行。為了很好的證明,在配置文件中設置了不同的優先級。如果優先級相同,如何判斷哪個先執行?先注冊的,先執行。
5、測試

很明顯有序廣播是由優先級的高低來決定的。由於接收廣播的類較少,標准廣播不易被體現出來,只需知道就收廣播的順序是不同的就行了,在這里不進行演示。