一.動態注冊
關鍵代碼
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中,所以應用如果沒啟動,則無法通知.靜態注冊可不受此限制.