アクティビティがサービスを開始し、サービスの動作を制御するインテントを通じて値を送信するセットアップがあります。これらの変数は、サービスの存続期間を通じて変化する可能性があり、サービスは更新をアクティビティ UI にプッシュします。アクティビティを終了して再起動すると、現在の値を取得するためにサービスからの更新が要求されます。ホーム画面からアクティビティを再起動するか、最近のアプリ メニューを使用すると、これは正常に機能します。ただし、サービスに設定したフォアグラウンドで実行中の通知を介してアクティビティを起動すると、サービスは開始時の元の値に再設定されます。
これがフォアグラウンド コードでの私の実行です。この問題に影響を与えるものは他にないと思います。
//Create notification and set to run in forground
Notification notification = new Notification(R.drawable.ic_launcher, getText(R.string.app_name),
System.currentTimeMillis());
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.app_name),
"Running Noise Based", pendingIntent);
startForeground(ONGOING_NOTIIFICATION, notification);
更新 3:
フラグ Intent.FLAG_ACTIVITY_NEW_TASK、Intent.FLAG_ACTIVITY_CLEAR_TOP、および Intent.FLAG_ACTIVITY_SINGLE_TOP を通知インテントに追加すると、問題が修正されました。なぜこれらが修正されたのかわかりません。なぜこれが起こるのか誰かが教えてくれるなら、教えてください。これが機能する新しいコードです。
//Create notification and set to run in forground
Notification notification = new Notification(R.drawable.ic_launcher, getText(R.string.app_name),
System.currentTimeMillis());
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.app_name),
"Running Noise Based", pendingIntent);
startForeground(ONGOING_NOTIIFICATION, notification);