android广播 有序 无序,Android全局广播(无序,有序)
寫這篇文章的原因:
最近博主在帶兩個小白學Android,在教廣播的過程中發現了一些問題
大概如下:
1.Android8.0以上廣播需要動態注冊 (靜態注冊無效)
2.Android8.0以上兩個應用間按照以前的操作發送廣播后在另一個沒辦法接收到廣播的情況
3.出現了廣播接收者的搶先或重復問題
在文章最后會有解決辦法!!!!
首先還是按照Android8.0以下來介紹一下廣播
一.無序廣播:啟動方式------>Context.sendBroadcast() (異步)
所有的receivers(接收器)的執行順序不確定,因此所有的receivers(接收器)接收broadcast的順序不確定。
這種方式效率更高,但是BroadcastReceiver無法使用setResult系列、getResult系列及abort(中止)系列API
下面是簡單操作:(以解屏,鎖屏為例)
1.定義一個廣播類
2.對廣播進行注冊(靜態或者動態)
靜態:AndroidMainFest中的application標簽下加上receiver的子標簽(此注釋只是一種比喻!!)
動態:
3.如果是監聽的網絡等其他,記得要加權限
以上是系統的,下面介紹下廣播發送者發送自定義廣播------>sendBroadcast()
二.有序廣播 啟動方式------>sendOrderedBroadcast()
里面兩個參數的就不寫了
至于優先級(-1000到1000)的值 —>值越大越先接收到廣播
靜態:設置intent-fliter的中Priority
動態:直接調用intentFilter.setPriority();
與無序廣播的區別(主要是兩個方法)
1.setResultData() 修改廣播中發送的對象
2.aboryBroadcast() 攔截廣播
解決文章開始的問題:
1.Android8.0以上兩個應用間按照以前的操作發送廣播后在另一個沒辦法接收到廣播的情況
解決辦法:在發送廣播的時候調用setPackage()方法,放入另一個應用的包名(另一個應用中注冊文件package)
2.出現了廣播接收者的搶先或重復問題
解決辦法:靜態注冊和動態注冊,不可同時存在,兩者選其一
本文同步分享在 博客“計蒙不吃魚”(CSDN)。
如有侵權,請聯系 support@oschina.cn 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。
總結
以上是生活随笔為你收集整理的android广播 有序 无序,Android全局广播(无序,有序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 闭关修炼21天,“啃完”283页pdf,
- 下一篇: 【考研英语语法】强调结构