当前位置: 代码迷 >> Android >> Android - Broadcast receiver 作为内部类接受播音
  详细解决方案

Android - Broadcast receiver 作为内部类接受播音

热度:113   发布时间:2016-05-01 20:00:38.0
Android - Broadcast receiver 作为内部类接受广播

?

Android - Broadcast receiver 作为内部类接受广播

?

?

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()方法里面注册。

?

@Overridepublic void onResume() {	myReceiver = new MyReceiver(this);   myReceiver.registerAction("myreceiver.action.name");}
??

?

在onPause()方法里面取消注册。

?

@Override     protected void onPause() {         unregisterReceiver(myReceiver);         super.onPause();     }
?

?

  相关解决方案