Broadcast的注册有两种方式,一种是在代码中动态注册,另一种是在AndroidManifest.xml中静态注册。
1)动态不是常驻型广播,也就是说广播跟随程序的生命周期。
2)静态是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
BroadcastReceiver 作为一个独立的class 会有一些棘手的问题 挡在大家面前
1. 如何把得到的信息返回给某个Thread
2. 代码比较零散 有一些阅读障碍
为解决以上问题:将Broadcast receiver作为内部类接收广播。
class MyReceiver extends BroadcastReceiver { Context context; public MyReceiver(Context c){ context = c; } //动态注册 public void registerAction(String action){ IntentFilter filter = new IntentFilter(); filter.addAction(action); context.registerReceiver(this,filter); } @Override public void onReceive(Context context, Intent intent) { //接收广播内容. } } }
动态注册一般在onResume()方法里面注册。
在onPause()方法里面取消注册。