始终重新创建具有launchMode singleTop或singleTask的活动

时间:2016-10-04 15:59:58

标签: android android-intent android-activity android-notifications android-task

我的应用中的MainActivity在清单文件中定义了launchMode singleTop。每当我点击通知时,我的MainActivity都会被重新创建,旧的实例会被销毁。单击通知时,MainActivity可见并位于前台,因此我假设意图将传递给当前实例onNewIntent(),但这种情况从未发生过。这是我创建的意图:

Intent resultIntent = new Intent(App.getInstance(), MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(App.getInstance());
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = PendingIntent.getActivity(App.getInstance(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

我有时会将FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP添加到意图中,如下所示:

resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

我也尝试使用singleTask launchMode和那些标志,并且发生了相同的行为。有人可以对这种行为提供一些见解吗?

1 个答案:

答案 0 :(得分:1)

您无需创建新的TaskStackBuilder。尝试使用想要重新启动应用程序的intent,但singleTop将阻止它执行此操作:

Intent resultIntent = new Intent(App.getInstance(), MainActivity.class);
resultIntent.setAction(Intent.ACTION_MAIN);
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);

PendingIntent resultPendingIntent = PendingIntent.getActivity(App.getInstance(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);