參考有序廣播,從優先級別最高的廣播接收器開始接收,接收完了如果沒有丟棄,就下傳給下乙個次高優先順序別的廣播接收器進行處理,依次類推,直到最後。
如果多個應用程式設定的優先級別相同,執行順序不確定,如果沒有設定優先順序,預設是0。
sendorderedbroadcast
(intent,null)
;
作用是:傳送ordered broadcast
sendorderedbroadcast
(intent, receiverpermission, resultreceiver,
scheduler, initialcode, initialdata, initialextras)
;
作用是:傳送ordered broadcast
引數 resultreceiver,可以自己重寫乙個類,作為乙個最終的receive 最後都能夠接收到廣播,最終的receiver 不需要再清單檔案裡面配置,引數 initialdata可以作為傳輸的資料。
## 靜態廣播 和 動態廣播 都可以設定優先順序
靜態註冊
android:priority=
"10"
動態註冊
intentfilter.
setpriority
(100
);
作用是:設定優先順序,優先順序越高的越早能接收到廣播。(取值範圍:-1000~10000)
setresultextras
(bundle)
bundle bundle =
getresultextras
(true
)
abortbroadcast
()
作用是:中斷廣播,不會再響比它有優先順序低得廣播再傳播下去了
public
class
sendorderbroadcastactivity
extends
activity
endreceiver myreceiver;
private
void
initreceiver3()
private
void
initreceiver2()
private
void
initreceiver1()
@override
protected
void
ondestroy()
@onclick
(r.id.order_btn)
public
void
onviewclicked()
}, null,
0, null, null);}
private
class
endreceiver
extends
broadcastreceiver
}public
class
myreceiver
extends
broadcastreceiver
}public
class
myreceiver2
extends
broadcastreceiver
}}
log輸出
myreceiver onreceive
endreceiver onreceive:優先順序高的廣播存入數值
myreceiver2 onreceive:優先順序高的廣播存入數值
最後的廣播
broadcastreceiver的有序廣播和優先順序:
有序廣播,粘性廣播
1.註冊多個receiver,要同時使用同乙個action,設定priority來指定優先順序。2.傳送有序廣播 sendorderedbroadcast intent,null intent intent newintent www.wangpeng intent.putextra name 我是...
有序廣播和無序廣播
有序廣播可以指定廣播接收者的順序,無序廣播是大家一起接收匹配到的進行操作就行。有序廣播可以中斷,sendorderedbroadcast 無序廣播不可以中斷 sendbroadcast intent 用 示例說明 param view 傳送無序廣播的按鈕的功能 public void sendbro...
Android中有序廣播和無序廣播
broadcastreceiver所對應的廣播分兩類 有序廣播和無序廣播。無序廣播 通過context.sendbroadcast 方法來傳送,它是完全非同步的。所有的receivers 接收器 的執行順序不確定,因此所有的receivers 接收器 接收broadcast的順序不確定。這種方式效率...