編輯:Android編程入門
一、在這裡我會先說明兩個基本概念,Broadcast(廣播)和BroadcastReceiver(廣播接收器)
1、Broadcast:是運用在應用程序內部以及應用程序之間的一種傳輸信息的機制
2、BroadcastReceiver:對發送過來的廣播進行過濾並且進行響應的組件,用來接收來自系統或者應用中的廣播的。
二、使用方法:分為發送和接受兩個階段
1、發送:把要發送的消息裝入到一個Intent對象,再通過調用相應的方法把Intent對象以廣播的形式發送出去,具體實現如下:
(1)普通廣播的發送 sendBroadcast(intent)
(2)有序廣播的發送sendOrderedBroadcast(intent,receiverPermission)
(3)粘性廣播的發送sendStickyBroadcast(intent)
2、接受:當Intent發送以後,所有已經注冊的BroadcastReceiver會檢查注冊時的Intent是否與發送的Intent想匹配,若匹配則就會調用BroadcastReceiver(BC1和BC2)和
onReceiver()
方法,所以當我們定義一個BroadcastReceiver的時候,都需要實現onReceiver()方法類。
注意:BroadcastReceiver需要注冊(靜態注冊、代碼注冊)
下邊是清單注冊
下邊是在代碼中注冊(動態注冊)
代碼注冊要銷毀廣播
三、特別說明
BroadcastReceiver的生命周期只有幾秒鐘,所以BroadcastReceiver裡不能做一些耗時的操作,如果要做耗時操作,應該通過發送Intent給Service。由Service來完成,不能用子線程操作,因為有可能接收器已經結束了,但是子線程還沒有結束,就會有一種情況發生:接收器結束了,那麼Receiver所在的進程很可能在被需要的時候已經被殺死,因為此時已經是空進程(一個沒有任何活動組件的進程就是空進程了)了,那麼正在工作的子線程也會被殺死,所以采用子線程解決是不可靠的。
四、廣播的種類
1、普通廣播:所有監聽該廣播的廣播接受者都可以監聽到該廣播
2、有序廣播:按照接受者的優先級順序接受廣播,優先級別在intent-filter中的priority中聲明,-1000到1000之間,值越大,優先級別越高。可以終止廣播的意圖繼續傳播,
接受者可以篡改內容
3、異步廣播(粘性廣播):不能將處理結果傳給下一個接受者,無法終止廣播
五、三種廣播的特點
1、普通廣播特點:同級別接收先後是隨機的(無序)
級別低的後接受到廣播
接收器不能截斷廣播的繼續傳播也不能改變處理廣播
2、有序廣播特點:同級別接收先後是隨機的(無序)
同級別動態注冊高於靜態注冊
能截斷廣播的繼續傳播,高級別的廣播接收器收到廣播要截斷廣播的方法:abortBroadcast()
接收器能截斷廣播的繼續傳播,也能處理廣播
接受廣播處理後的數據
轉載請注明出處:http://hovertree.com/先介紹下Android對Activity的管理,Android采用Task來管理多個Activity,當我們啟動
Android其本質就是在標准的Linux系統上增加了Java虛擬機Dalvik,並在Dalvik虛擬機上搭建了一個JAVA的application framework,
Android 服務(Service)服務是一個後台運行的組件,執行長時間運行且不需要用戶交互的任務。即使應用被銷毀也依然可以工作。服務基本上包含兩種狀態
五種交互方式,分別是:通過廣播交互、通過共享文件交互、通過Messenger(信使)交互、通過自定義接口交互、通過AIDL交互。(可能更多)Service與Thread的