2011-03-20 74 views
4

我知道有幾個帖子是針對我要問的,但我無法找到正確的答案。android - launchMode = singleTask和Notifications?

根據我的理解,如果您的主要活動(我們稱之爲A)launchMode設置爲singleTask,並且A啓動了活動B,則單擊Home按鈕將銷燬歷史堆棧並重新啓動應用程序你回到A而不是B.

我將launchMode設置爲singleTask,因爲我有一個持久通知,並且我不希望在用戶單擊通知時出現主活動的多個實例。

有什麼我失蹤,會讓我迎合兩個?

因此,我問是否有一種方法可以確保每當用戶希望從通知或不通知應用程序啓動應用程序時,讓他回到最後(當前)活動。

如果我將launchMode更改爲singleTop,它可以工作,但每次啓動時都會獲得主活動的多個實例。

感謝

安德烈亞斯

回答

1

你試過設置launchMode到singleTop到應用中的所有活動?因爲我從查詢中得到的是主要活動不是singleTop,所以一旦主要活動從通知活動啓動的活動啓動後,可能會導致主要活動的另一個實例被調用。

或者您可以將launchMode指定爲清單中應用程序標記本身的屬性。

2

我用下面的代碼,以避免活動

Intent intent=new Intent(this,RICO.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

更改艙單的多個實例

0

我在與這兩個approches問題看起來並不適合我。 只有在這種情況下,通知纔是完美無缺的: - 在主要活動中使用後退按鈕(歷史記錄僅包含該活動) - 不使用主頁按鈕 - 如果您正在調用的活動不使用通知,頂部和積極

在任何其他情況下,通知不能再在前臺通過使用「新意圖(......)」

0

我發現的清單選項和意圖的鍊金組合調用活動標誌獲得我需要的東西:

Intent intent= new Intent(this, YaampActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

使用這些選項

android:launchMode="singleTask" 
android:taskAffinity="" 
android:excludeFromRecents="true" 

在元件內部。

現在我已經有一個通知產生主要活動(如果該活動尚未在前臺),並且即使通過按下主頁按鈕和/或後面的活動「關閉」活動,其行爲也是正確的。

相關問題