動態註冊和靜態註冊

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章