我有一个设置,我的活动启动服务,并通过控制服务行为方式的意图发送值。这些变量可以在服务的生命周期中发生变化,服务会将更新推送回活动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);