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)