一.动态注册
关键代码
class MyActivity extentds Activity{ //DYNC_BROADCAST可以随意,但注册广播和发送广播时action应该保持一致 private static final String DYNC_BROADCAST = "guo.com.example.dyncBroadcastReceiver"; private DyncBroadcastReceiver dyncBroadcastReceiver = new DyncBroadcastReceiver(); @Override protected void onCreate(Bundle savedInstanceState) { ..... // 注册广播 IntentFilter iFilter = new IntentFilter(); iFilter.addAction(DYNC_BROADCAST); registerReceiver(dyncBroadcastReceiver, iFilter); } // 发送广播通知 protected void sendBroadcast(){ Intent intent = new Intent(); intent.setAction(DYNC_BROADCAST); sendBroacdcast(intent); }
@Override
protected void onDestroy() {
unregisterReceiver(dyncBroadcastReceiver);
super.onDestroy();
}
}
二.静态注册
class MyActivity extentds Activity{ @Override protected void onCreate(Bundle savedInstanceState) { ..... } // 发送广播通知 protected void sendBroadcast(){ Intent intent = new Intent(); intent.setAction("guo.com.example.MyBroadcast"); sendBroacdcast(intent); } }
AndroidManifest.xml
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="guo.com.example.MyBroadcast" /> </intent-filter> </receiver>
两者区别:
动态注册广播需要在每个活动页注册,静态广播可以实现注册到所有活动页.因为动态注册逻辑写在onCreate中,所以应用如果没启动,则无法通知.静态注册可不受此限制.