2016-05-12 54 views
0

僅使用顯示GCM通知(而不是使用onMessageReceived()和GcmListenerService)的默認方式,可以讓活動堆棧保持原樣並僅將應用程序置於前臺當通知被觸動?我希望獲得與應用程序圖標被觸摸時相同的行爲。目前,每次觸摸通知時都會啓動一項新活動。單擊通知時保留活動堆棧

編輯:

下面是詳細的情況。我已閱讀該文檔,但仍無法獲得所需的行爲。假設我的堆棧如下所示:

Activity B 
Activity A 

活動B當前處於最高活動狀態。當用戶再次按下圓形按鈕然後再按下應用程序圖標時,同一個堆棧被激活(恢復)。

現在,在這種情況下,在通知觸摸時我得到這個:

Activity A 
Activity B 
Activity A 

但我想只是保留此:

Activity B 
Activity A 

我已經嘗試了所有launchMode變種,但有沒有成功。

回答

1

它與您的活動設置方式有關。例如,你可以在你的清單中的活動爲您singleTop活動:

<activity 
... 
    android:launchMode="singleTop" 
... 
/> 

這樣當有此活動的新Intent,Android操作系統不會讓你活動的新實例,而是拉起現有實例並通過onNewIntent(Intent)函數傳遞新的Intent(使其工作,您應該在您的活動中重寫該方法)。

有更多的方法來做到這一點,檢查出documentation(「使用清單文件」部分),看看什麼是最適合您的方案。

+0

謝謝!我已閱讀該文檔,但仍無法獲得所需的行爲。假設我的堆棧如下所示: 活動B 活動A 活動B當前處於頂部並處於活動狀態。當用戶再次按下圓形按鈕然後再按下應用程序圖標時,同一個堆棧被激活(恢復)。 現在,在這種情況下,在通知觸摸時我得到這個: 活動A 活動B 活動A 但我想只是保留此: 活動B 活動A 我試着所有launchMode變體,但沒有成功。 – user1195883

+0

我不知道我明白,你的活動順序沒有意義 - 但看看你可以設置一些意圖標誌,如'yourIntentName.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);':https://developer.android。 com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TASK – C0D3LIC1OU5

+0

如果這個答案對你有幫助,請接受它作爲正確的答案。 – C0D3LIC1OU5