整體概述
- 廣播是在程式之間的,一般會由系統發起:比如電量不足
- 訊息到達后,BroadCastReceiver呼叫onReceive方法來實作廣播的事件
兩種方法來發送廣播
context.sendBroadcast(intent)通常會伴隨資料的傳遞intent.putExtra()context.sendOrderBroadCast(intent)這個在intent-filter中設定優先級android:priority
兩種注冊方式
靜態注冊
在Androidmanifest.xml中注冊
- 定義一個myReceiver extends BroadCastReceiver 實作onReceive()方法
- 在Androidmanifest中注冊廣播接收器
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.example.broadcast" />
</intent-filter>
</receiver>
- 在主activity中設定事件監聽:
其內容為
設定一個intent,intent設定廣播跳轉(顯式隱式),
sendBroadCast(intent) 實作跳轉 - 廣播接受器中的onReceive()方法設定回應事件
動態注冊
創建一個BroadCasteReceiver的子類的實體化物件
- 創建子類,定義一個myReceiver extends BroadCastReceiver 實作onReceive()方法
- 在Androidmanifest中注冊廣播接收器
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.example.broadcast" />
</intent-filter>
</receiver>
- 動態注冊接收器
//1.創建一個物件
final MyReceiver myReceiver2 = new MyReceiver();
//2.設定button入口,設定事件監聽
Button btn_register = findViewById(R.id.register_broadcast);
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//添加一個Intentfilter物件,添加action屬性
IntentFilter filter = new IntentFilter();
filter.addAction("MyReceiver2");
//將intentfilter與創建的子類物件關聯起來
registerReceiver(myReceiver2,filter);
}
});
- 取消注冊接收器
Button btn_unregister = findViewById(R.id.unregister_broadcast);
btn_unregister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
unregisterReceiver(myReceiver2);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/170664.html
標籤:其他
