1

我的应用程序中的 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_TOPand添加FLAG_ACTIVITY_SINGLE_TOP到意图中:

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

我也尝试过将singleTasklaunchMode 与这些标志一起使用,并且发生了相同的行为。有人可以对这种行为提供一些见解吗?

4

1 回答 1

1

您无需创建新的TaskStackBuilder. 尝试意图重启应用程序,但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);
于 2016-10-04T17:30:33.183 回答