1

我的应用中的MainActivity在清单文件中定义了launchModesingleTop。每当我点击一个通知我的MainActivity被重新创建,旧的实例被销毁。 MainActivity是可见的,并且在点击通知时处于前景,所以我会假定意图将被传递给当前实例的onNewIntent(),但这种情况从未发生过。这里是意图创建:使用launchMode singleTop或singleTask的活动总是被重新创建

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

您不需要创建新的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); 
+0

非常感谢,这工作。我也不需要在意图上设置任何标志。 –

相关问题