編輯:關於android開發
Context.sendBroadcast
或者Context.sendOrderedBroadcast發出的意圖(intent)。
@@@LocalBroadcastManager
如果你不需要誇應用發送廣播,建議你使用 LocalBroadcastManager, LocalBroadcastManager 是一個幫助類,幫助你方便的在
當前應用
中注冊廣播接收 器和發送廣播。並且和發送全局廣播比起來,他還有如下優勢:
1,不用擔心私有數據的安全性,因為發送的廣播不會讓除當前應用之外的其他應用接收到。
2,不用擔心其他應用會利用你的安全漏洞,因為其他應用不可能通過 LocalBroadcastManager向你發送廣播。
3,它比發送全局廣播更加高效。
LocalBroadcastManager的常用方法如下:
@@@注冊
廣播接收器可以通過Context.registerReceiver()來動態注冊,還可以通過在 AndroidManifest.xml
中添加<receiver>
標簽靜態注冊。
動態注冊方式:如果你在 Activity.onResume()注冊一個廣播接收器,你應該在
Activity.onPause()注銷這個它
. (當Activity Pause的時候,你不會接受到廣播,如果你不在 Activity.onPause()中注銷,將會帶來極大的資源消耗。
). 不要在Activity.onSaveInstanceState()中注銷一個廣播接收器
, 因為該方法不會在用戶移動到歷史堆棧中其他Activity的時候被調用。
靜態注冊方式:
其中:priority來設置優先級,類型為Integer類型,范圍為-1000~1000,在這個范圍中,值越大,優先級越高。
例子:
自定義三個廣播接收器。
1,
2,
3,
4,在清單文件中注冊,並分別制定他們的優先級為1000,500,1;
5,通過Context.sendBroadcast發送廣播。
結果為:
@@@廣播的類型:
1,普通廣播(Normal broadcasts ):普通廣播是由Context.sendBroadcast方法發送的。這種方式是完全異步的,在這種方式下,所有的廣播接收器都運行在一個無序的狀態下,經常是所有接收器同時接受到廣播,這種方式也更加高效,但是不能中斷。
2,有序廣播(Ordered broadcasts):有序廣播是由Context.sendOrderedBroadcast方法發送的,這種方式一次只能由一個接收器接收,所有的接收器輪流收到廣播,所以他可以傳播一個結果到下一個接收器,或者完全中斷一個廣播。接受的順序是由清單文件配置中priority來決定的,范圍為(-1000~1000)值越大,優先級越高,相同優先級的接收器以任意的順序收到廣播。
@@@有關安全性的思考。
考慮到廣播接收器是誇應用的特性,所以我們應該考慮到我們的自己的接收器不被其他應用濫用。
1,Intent的命名空間是全局的,所以Intent的action name和其他String參數要考慮唯一性,否則我們可能無意中和其他應用沖突。
2,動態注冊廣播接收器時,可以用權限來限制誰可以發送廣播給我們。
3,靜態注冊時,任何滿足你指定的intent-filters的廣播都可以向你發送廣播,我們可以使用指定android:exported="false"的屬性來阻止其他廣播發送給你。
@@@廣播接收器的生命周期注意
1,一個廣播接收器對象只是在其 onReceive(Context, Intent)方法被調用的時候才有效,一旦 onReceive(Context, Intent)方法的代碼呗返回,廣播接收器的對象將不再有效。這個主要的影響就是你能在 onReceive(Context, Intent)方法中執行什麼操作,任何有關異步的操作是無用的,因為當異步操作執行完成後, onReceive(Context, Intent)方法已經執行完,廣播接收器對象已不再有效或者被系統回收。
2,通常情況下,你不能在 onReceive(Context, Intent)方法中彈出一個對話框,或者綁定一個service,對於前者,你可以用NotificationManager
來代替,對於後者,你可以調用Context.startService()
方法來代替。對於耗時操作應該在Service中執行。
融雲如何實現文件發送(高級進階) 干貨來啦~! 想在聊天中發 小視頻?gif 動圖? 發紅包? 發 自定義表情? 沒有問題!在融雲統統都可以實現! 以上不管是 小視頻
安卓應用反編譯(二)-APK包反編譯淺析 第二章 APK包反編譯 被編譯器處理過的代碼和資源已經打包成了APK,有的甚至被轉化成了二進制文件。但是我們也有一些方法,把這些
圖表框架HelloCharts(1)線形圖,hellocharts線形效果圖 1. 導入 .aar 2. fragment_
Toast顯示圖文界面——Android開發之路1,toastandroidToast的多種使用方法 Toast其實是一個功能特別強大的組件,不僅僅可以吐司