2013-09-21 57 views
2

我的通知應該啓動一項活動,或者僅在活動已打開(屏幕)時顯示該活動。通知的作用是銷燬活動並重新創建,即使活動已經在屏幕上。摧毀並創建現有活動的通知

我已經搜索瞭解決方案,他們說要將android:launchMode="singleTop"添加到清單中的活動中,但這沒有效果,只要用戶單擊通知,活動仍會被銷燬並重新創建。

這就是通知是如何告知開始點擊活動:

Intent resultIntent = new Intent(this, MyActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
stackBuilder.addParentStack(MyActivity.class); 
stackBuilder.addNextIntent(resultIntent); 
PendingIntent resultPendingIntent = 
    stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.setContentIntent(resultPendingIntent); 
// mBuilder is NotificationCompat.Builder() 

回答

-1

這是不可能的。明確的文檔「如果活動的實例已經存在於目標任務的頂部,則系統通過調用onNewIntent()方法將意圖路由到該實例,而不是創建活動的新實例。」我一遍又一遍地使用它。仔細檢查你是否已設定MyActivitylaunchModesingleTop

+0

替換行

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 

我有。仔細檢查我的意思。我不知道它是否與TaskStackBuilder混淆(它是在Android開發站點上的一種方式,使後退按鈕導致通知打開的應用程序的父活動) – PFort

+0

我確認此行爲存在,FFS,一如既往的Android中發生了什麼。以前singleTop在Android上工作得很好 –

3

PendingIntent resultPendingIntent = 
stackBuilder.getPendingIntent(0,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
+0

這是瘋了!它完成了這項工作。 –