android 廣播的使用(自用)

廣播接受者的註冊有兩種方式:

1.採用清單文件註冊的廣播接收者,只要應用程序被部署到手機上,廣播接收者就生效了

2.採用代碼的方式註冊的廣播接收者,生命週期與激活他的這段代碼所在的組件生命週期相同

因爲我們代碼註冊一個廣播時使用:this.registeBroadcastReceiver()那麼我們爲了保證鎖屏的廣播接收者長期的能夠接收到廣播事件,保證調用者必須長時間在系統存活(採用服務的方式)

步驟:

1.創建一個service類,在onCreate()方法中使用registerReceiver(receiver,filter);註冊一個廣播接收者

receiver:我們可以定義一個廣播接收者類繼承BroadcastReceiver把我們要處理的方法事件寫在onReceive()方法中

filter:廣播接收者的意圖過濾器

IntentFilter filter = new IntentFilter();

filter.setPriority(1000);設置優先級最高1000

filter.addAction(Intent.ACTION_SCREEN_OFF);//設置關心的動作,鎖屏

 

2.在service類中的onDestroy()方法中反註冊這個廣播this.unregisterReceiver(receiver);//防止log異常

3.在activity中開啓服務或者關閉服務

Private Intent lockscreenMonitorIntent = new Intent(this,LockSreenMonitor.class);

startService(lockscreenMonitorIntent );

stopService(lockscreenMonitorIntent );





//////////////////////////////////////////////////////////////////////////////////////////


private BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
}
}
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mReceiver, filter);
}


@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}




廣播接收者: 

1.註冊(Androidmanifest.xml 或其它地方註冊).
2.寫廣播接收者代碼 class MyReceiver extends BroadcastReceiver { onReceiver(){} }
3.其它地方發送廣播代碼(有參數).


//  以IndroidLauncher爲例:

//..............AndroidManifest.xml............................

        <activity

            android:name="cn.ingenic.launcher.IngenicLauncher"
            <intent-filter>
                <action android:name="cn.ingenic.action.NOTIFICATION_CLEAR.TEST" />
            </intent-filter>
        </activity>


private void registerLauncherReceivers() {
IntentFilter filter = new IntentFilter();
filter.addAction("cn.ingenic.action.NOTIFICATION_CLEAR.TEST");
mLauncherReceiver = new LauncherReceiver();
registerReceiver(mLauncherReceiver, filter);
}


private class LauncherReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if ("cn.ingenic.action.NOTIFICATION_CLEAR.TEST".equals(action)) {

}



發佈了9 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章