次の問題があります:
カスタムBroadcastReceiverを作成し、それをメインアクティビティ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));
}
...
}
BroadcastReceiverクラス:
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 ->");
ログは私には非常に奇妙に見えます:
- 意図->
- 意図<-
- 意図->
- 意図<-
- 意図<-
- 意図->
- 意図<-
- 意図<-
- 意図<-
- ..。
初めてLogReceiverが受信するインテントは1つだけで、これは正しいですが、次回は、送信されるよりも多くの等しいインテントを受信します。
プロジェクトでインテントアプローチから切り替えることができますが、なぜこれが発生するのか興味深いですか?