Android四大應用元件之BroadCastReceiver
阿新 • • 發佈:2018-12-13
廣播接收器
- 定義:
一個應用可以在發生特定事件時傳送Broadcast, 系統中任何應用只要註冊了對應Receiver就會接收到此Broadcast,一個應用如果對某個廣播感興趣, 就可以註冊對應的Receiver來接收廣播
廣播事件機制是應用程式(程序間)之間通訊的一種手段,廣播事件處理屬於系統級的事件處理(一般事件處理是屬於View級的事件處理)。
- 廣播的型別: 一般廣播與有序廣播
- 兩種註冊廣播的方式:
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){ //處理廣播 } }
- 常用API:
Context: 傳送一般廣播:sendBroadcast(Intent intent) 傳送有序廣播:sendOrderedBroadcast(Intent intent) 註冊廣播接收器:registerReceiver(receiver, intentFilter) 解註冊廣播接收器:unRegisterReceiver(receiver)
BroadcastReceiver: 接收到廣播的回撥:onReceive(Context context, Intent intent) 中斷廣播的繼續傳播:abortBroadcast() 判斷是否是有序廣播:boolean isOrderedBroadcast()
- 常見系統廣播:
收到簡訊廣播 : android.provider.Telephony.SMS_RECEIVED 開機完成廣播 : Intent.ACTION_BOOT_COMPLETED 應用解除安裝廣播 : Intent.ACTION_PACKAGE_REMOVED 手機鎖屏 : Intent.ACTION_SCREEN_OFF 手機開屏 : Intent.ACTION_SCREEN_ON