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

非常感謝,這工作。我也不需要在意圖上設置任何標誌。 –

相關問題