發送自定義廣播 之 有序廣播

之前章節介紹瞭如何發送和接收標準廣播。標準廣播發送後,可以被多個廣播接收器同時接收到。除了標準廣播,還有有序廣播。對於有序廣播,廣播接收器接收廣播是有先後順序的,而且前面的廣播接收器還可以將廣播截斷,阻止其繼續傳播。本章節介紹有序廣播如何發送和接收。
本章節實現,在程序界面上,通過點擊一個按鈕發送出一條有序廣播,然後程序中定義的2個廣播接收器,有序的接收到該廣播。同時,實現前面的廣播接收器,截斷該廣播的傳遞,使後面的廣播接收器無法接收到。

l 1、新建一個Android Application Project項目,在佈局文件activity_main.xml中創建一個按鈕,作爲發送廣播的觸發點,代碼如下:
這裏寫圖片描述
圖1

l 2、在MainActivity.java中,撰寫按鈕的點擊事件代碼,在點擊事件中增加發送自定義廣播的邏輯。代碼如下:
這裏寫圖片描述
圖2
說明:
• 第21行代碼,構建一個Intent對象,並把要發送的廣播的值“ com.example.mybroadcast.MY_ORDER_BROADCAST ”傳入。
• 第22行代碼,後調用Context的sendOrderedBroadcast()方法將廣播發送出去,此處和發送標準廣播用的sendBroadc()方法不同。

l 3、新建兩個類MyBroadcastReceiverA和MyBroadcastReceiverB,均繼承自 BroadcastReceiver,用來接收廣播。代碼如下:
這裏寫圖片描述
圖3

這裏寫圖片描述
圖4

l 4、在文件 AndroidManifest.xml中對步驟3創建的廣播接收器進行註冊,代碼片段如下:
這裏寫圖片描述
圖5
說明:
• 我們給接收器MyBroadcReceiverA,通過屬性android:priority設置了優先級100,以使它能在MyBroadcaReceiverB之前接收到廣播。

l 5、運行程序,點擊按鈕後,程序先彈出接收到廣播的提示信息”The Frist!”,然後彈出提示信息”The Second!”,接收器MyBroadcastReceiverA先於接收器MyBroadcastReceiverB接收到廣播,成功!

l 6、在文件 AndroidManifest.xml中,爲廣播接收器MyBroadcastReceiverB設置優先級200。然後再次運行程序,點擊按鈕後,程序先彈出接收到廣播的提示信息”The Second!”,然後彈出提示信息”The Frist!”,接收器MyBroadcastReceiverB先於接收器MyBroadcastReceiverB接收到廣播,成功!

l 7、修改類MyBroadcastReceiverB的代碼,增加第14行代碼,用於截斷廣播的傳遞。代碼如下:
這裏寫圖片描述
圖6

l 8、運行程序,點擊按鈕後,程序只彈出接收到廣播的提示信息”The Second!”,接收器MyBroadcastReceiverB截斷廣播成功!


上面內容有疑問的地方,可以加下面 yun 的微信,和 yun 直接溝通
這裏寫圖片描述

也可以加 yun 的QQ:307 434 1506

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章