动态注册广播就是不在Manifest中写fliter,之所以这样是因为有时候需要监听该广播并响应。但是有时候又不需要监听,所以需要在代码中动态的注册广播并且当不需要的时候就取消注册。动态注册就不需要在XML中进行注册了
下面以屏幕开启的广播监听为例:
public class ScreenReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (action.equals("android.intent.action.SCREEN_ON")) {Toast.make(context,"屏幕亮啦",Toast.LENGTH_SHORT).show();}}}
public class MainActivity extends Activity {private ScreenReceiver receiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);receiver = new ScreenReceiver();IntentFilter filter=new IntentFilter();filter.addAction("android.intent.action.SCREEN_ON");registerReceiver(receiver, filter);}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(receiver);}
}