1. 什麼是廣播
a. android 每一個應用都可以註冊去接收系統或者其他應用發出的廣播,自己也可以發廣播
b. 廣播分爲標準廣播(無序) 和 有序廣播
b.1 發送標準廣播
Intent intent=new Intent("自定義字符串");
sendBroadCast(intent);
b.2 發送有序廣播
Intent intent=new Intent("自定義字符串");
sendOrderBroadcast(intent,null//權限相關字符串)
這樣一來,在receiver裏 android:priority="100" 表示先後權利
還可以在onReceive()中abordBroadcast();中斷廣播,不會再繼續傳遞下去
2. 例
a. 動態註冊系統網絡變化,提示用戶是否有網絡//靜態註冊也可以實現
1.定義廣播接受者類繼承BroadcastReceiver類 重寫onReceive() 2.定義IntentFliter 和廣播接收者類對象,intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); registerReceiver(netWorkChangeReceiver,intentFilter) onReceive(Context context,Intent,intent){ ConnectivityManager cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetWorkInfo info=cm.getActivityNetworkInfo(); if(info!=null&&info.isAvailable){
}else{ } } 加上用戶權限ACCESS_NETWORK_STATE |
b. 靜態註冊接收開機廣播
1. 加上用戶權限RECEIVE_BOOT_COMPLETE 2. <receiver> android:enable="true" android:exported="true" <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETE"/> </intent-filter> </receiver> |
3. 使用本地廣播
1. LocalBroadCastManager lbm=LocalBroadCastManager.getInstance(this);
2. 同時都調用lbm 的註冊 和 發送
3. 優點三個
高效,廣播不會離開本應用,也不會接受外部廣播