動態註冊和靜態註冊

weixin_34236497發表於2018-05-21

1、四大元件只有廣播接收者可以不在清單檔案中註冊
2、靜態註冊:在清單檔案中通過宣告一個receiver節點指定intent-filter,這種方式就是靜態註冊
3、動態註冊:registerReceiver(receiver, filter);
4、登出的方法:unregisterReceiver(receiver);


向我們之前在清單檔案註冊的都是靜態註冊
列如:有序無序的傳送廣播

有的廣播需要經常觸發 ,不宜使用靜態註冊
列如:
螢幕的點亮關閉
我們如果靜態註冊 需要呼叫onRecevice方法 導致記憶體不足,卡頓,所以我們要動態註冊


*********程式碼如下***************
···
public class MainActivity extends Activity {
private ScreenLight receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//廣播接收者物件
receiver = new ScreenLight();
//意圖過濾器物件
IntentFilter filter = new IntentFilter();
//給意圖過濾器新增action,就是要監聽的廣播對應的action
filter.addAction("android.intent.action.SCREEN_ON");
filter.addAction("android.intent.action.SCREEN_OFF");

    //動態註冊廣播接收者
    registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
    
    unregisterReceiver(receiver);
}

}

···
動態註冊需要呼叫onDestroy()方法登出

unregisterReceiver(receiver)

相關文章