1. 程式人生 > >Android四大應用元件之BroadCastReceiver

Android四大應用元件之BroadCastReceiver

廣播接收器

  1. 定義:

一個應用可以在發生特定事件時傳送Broadcast, 系統中任何應用只要註冊了對應Receiver就會接收到此Broadcast,一個應用如果對某個廣播感興趣, 就可以註冊對應的Receiver來接收廣播

廣播事件機制是應用程式(程序間)之間通訊的一種手段,廣播事件處理屬於系統級的事件處理(一般事件處理是屬於View級的事件處理)。

  1. 廣播的型別: 一般廣播與有序廣播 區別
  2. 兩種註冊廣播的方式:

AndroidManifest中註冊(靜態註冊)

<receiver android:name="全類名">
            <!--priority指定當前receiver的優先順序, 值是0-1000, 越大越好  -->
            <intent-filter android:priority="1000">
                <action android:name="自定義action"/>
            </intent-filter>
</receiver>

編碼註冊(動態註冊):

MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter(action);
registerReceiver(receiver, filter);

註冊方式的區別 自定義廣播接收器類都必須繼承於BroadcastReceiver類

public class MyBroadcastReceiver extends BroadcastReceiver{
	 public void onReceive(Context context, Intent intent){	//處理廣播
		
	}
}
  1. 常用API:

Context: 傳送一般廣播:sendBroadcast(Intent intent) 傳送有序廣播:sendOrderedBroadcast(Intent intent) 註冊廣播接收器:registerReceiver(receiver, intentFilter) 解註冊廣播接收器:unRegisterReceiver(receiver)

BroadcastReceiver: 接收到廣播的回撥:onReceive(Context context, Intent intent) 中斷廣播的繼續傳播:abortBroadcast() 判斷是否是有序廣播:boolean isOrderedBroadcast()

  1. 常見系統廣播:

收到簡訊廣播 : android.provider.Telephony.SMS_RECEIVED 開機完成廣播 : Intent.ACTION_BOOT_COMPLETED 應用解除安裝廣播 : Intent.ACTION_PACKAGE_REMOVED 手機鎖屏 : Intent.ACTION_SCREEN_OFF 手機開屏 : Intent.ACTION_SCREEN_ON