0
我有一個問題:廣播接收器接收更多的意圖不是發給
我創建一個自定義廣播接收器,並在主要活動中的onCreate處理程序來註冊吧:
public class MainActivity extends ListActivity {
private static final LogReceiver logReceiver = new LogReceiver();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocalBroadcastManager.getInstance(this).registerReceiver(logReceiver, new IntentFilter(LogReceiver.ACTION_LOG));
}
...
}
廣播接收器類:
public class LogReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("intent", "intent <-");
}
}
然後我使用下一個代碼從本地服務發送多個意圖:
Intent intent = new Intent(LogReceiver.ACTION_LOG).putExtra("log", logString);
localBroadcastManager.sendBroadcast(intent);
Log.i("intent", "intent ->");
日誌看起來很奇怪,我說:
- 意圖 - >
- 意圖< -
- 意圖 - >
- 意圖< -
- 意圖< -
- 意圖 - >
- intent < -
- 意圖< -
- 意圖< -
- ...
的第一時間LogReceiver只接收一個意圖,這是正確的,但每下一次比發送接收更平等的意圖。
我可以從我的項目中的意圖方法切換,但只是有趣的爲什麼會發生這種情況?
你可能註冊了一大堆接收器(每次你輸入你的應用程序,除非你註銷它們) – njzk2
感謝您的評論。事實上你是對的。 OnCreate被多次調用 - 只需使用調試器對其進行檢查即可。看來,我必須審查活動生命週期文章:) – Vsevolod
將您的註冊代碼移至onResume並在onPause中取消註冊。 –