安卓学习 之 广播(五)
生活随笔
收集整理的這篇文章主要介紹了
安卓学习 之 广播(五)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
廣播機制簡介
標準廣播:異步執(zhí)行,所有廣播接收器在同一時刻收到廣播消息,無法被截斷;
有序廣播:同步執(zhí)行,同一時刻只有一個廣播接收器接收到消息,有先后順序,可被后面廣播接收器截斷。
接收系統(tǒng)廣播
系統(tǒng)廣播譬如:電量變化、時間時區(qū)變化等。在代碼中注冊廣播稱為動態(tài)注冊,在AndroidManifest.xml中注冊稱為靜態(tài)注冊
動態(tài)注冊監(jiān)聽網(wǎng)絡(luò)變化
1.定義內(nèi)部類,繼承自BroadcastReceiver,并重寫父類onReceive方法,創(chuàng)建廣播接收器。
2.創(chuàng)建intentFilter實例,添加一個action的值,廣播接收器想接受什么廣播,在這里添加相應(yīng)的Action
一定要確定對應(yīng)的Action android.net.conn.CONNECTIVITY_CHANGE
3.創(chuàng)建NetworkChangeReceiver實例,調(diào)用registerReceiver來進行注冊,實現(xiàn)動態(tài)監(jiān)聽功能。
public class MainActivity extends Activity { private IntentFilter intentFilter;private NetworkChangeReceiver networkChangeReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intentFilter = new IntentFilter();intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");networkChangeReceiver = new NetworkChangeReceiver();registerReceiver(networkChangeReceiver, intentFilter); }@Overrideprotected void onDestroy() { super.onDestroy(); unregisterReceiver(networkChangeReceiver);} } class NetworkChangeReceiver extends BroadcastReceiver { @Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "network changes", Toast.LENGTH_SHORT).show();} }靜態(tài)注冊實現(xiàn)開機啟動
BroadcastReceiver
發(fā)送自定義廣播
發(fā)送標準廣播
發(fā)送有序廣播
發(fā)送本地廣播
本地廣播機制支持能在程序內(nèi)部傳遞而且只接受本程序發(fā)出的廣播。
// 獲取實例 localBroadcastManager = LocalBroadcastManager.getInstance(this); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");localBroadcastManager.sendBroadcast(intent); // 發(fā)送本地廣播} }); intentFilter = new IntentFilter(); intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST"); localReceiver = new LocalReceiver(); localBroadcastManager.registerReceiver(localReceiver, intentFilter);總結(jié)
以上是生活随笔為你收集整理的安卓学习 之 广播(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓学习 之 碎片(四)
- 下一篇: 安卓学习 之 数据存储(六)