実行中または実行中でない別のアクティビティにデータを送信するために使用している BroadcastReceiver があります。onReceive() メソッドでインテントを使用し、putExtra() でデータを入れています。データはアクティビティに送信されますが、アクティビティが既に実行されていてフォアグラウンドにある場合でも、アクティビティの onCreate() メソッドが呼び出されるため、新しいインスタンスを作成していると思います。onResume() のみを呼び出したい、またはインテントが存在しない場合はインテントを作成/開始し、存在する場合は「再開」する方法が他にあるかもしれません。現在、アクティビティが再作成されていますが、これは望ましくありません。
public void onReceive(Context context, Intent intent) {
intent.setClass(context, MyActivity.class);
intent.putExtra("message", "the data here");
//intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d("sending msg", "msg");
context.startActivity(intent);
}
FLAG_ACTIVITY_NEW_TASK を使用しない場合、RuntimeException がスローされます。具体的には、アクティビティではないものからアクティビティを開始する場合は、FLAG_ACTIVITY_NEW_TASK
.