7/01/2011

[Android] Broadcast Receivers

       當應用程式希望對外部的事件發生時,需做一些的處理時,就需要用到Broadcast Intent Receiver,例如:電池電量快用盡時,網路連線斷線時,可能需要告知使用者須趕緊完成未完成的處理,或者是有來電或簡訊通知時,告知使用者是否要處理,應用程式並不會因為Broadcast Receivers被呼叫而被它執行起來。而且當Broadcast Receivers被觸發時,系統會依宣告的需求來執行相對應的應用程式。應用程式可以利用 Context.sendBroadcast() 方法來發出他們自己的intent broadcast給其他的應程式。


應用程式本身也可以發出廣播訊息,可以做為其他應用程式溝通的管道
廣播訊息是公開的,任何的應用程式都可以透過註冊Broadcast Receiver來接收到你所廣播的訊息,所以信用卡帳號不建議用廣播
一般通常用來作為Services與Activity溝通使用
範例: 是透過Activity發送Broadcast 至Receiver程式,建立一個activity與二個receiver程式,利用Broadcast 呼叫另兩個receiver起來,其寫Broadcast Receivers主要分成兩部分:
1.發送廣播
在程式中透過Intent建立,建立好哪個action filter所接收,接著透過sendBroadcast函式發送出去
image
2.接收廣播

想接收與處理廣播的Intent,必須註冊Broadcast Receiver來接收到你所廣播的訊息,並且設定一個Intent Filter已將不需要監聽的訊息過濾掉,最後將其註冊Android框架中

建立class(java file)對應剛剛以建立的兩組action,建立後改變繼承於Broadcast Receiver類別,並複寫OnReceive函式,須注意不可以超過五秒,長時間的處理請移至Thread中執行

image

3.註冊Broadcast Receiver,可以透過AndroidManifest.xml或者程式碼註冊,以便Broadcast產生時對應相對的Receiver;當接收訊息時,彈出通知(Notification),讓使用者知悉

image

必須要注意的是需要新增兩組action,其action name分別為org.itrc.action.NEW_BROADCAST_1與org.itrc.action.NEW_BROADCAST_2,在xml填入相對應的acyion name給class,這樣透過sendBroadcast(intent)送出,然後BroadcastReceiver接收相對應的action name,這樣程式就可以正常的動作

4.加入接收到BroadcastReceiver時需要產生的訊息透過通知(Notification),透過此方式顯示於畫面上

接收,並產生訊息於狀態列上

image

清除所有狀態列的訊息

image

執行結果

image

沒有留言:

張貼留言

請留言~一起討論吧~