簡體   English   中英

android - launchMode = singleTask和Notifications?

[英]android - launchMode=singleTask and Notifications?

我知道有一些帖子可以提出我要問的內容,但我找不到任何正確的答案。

根據我的理解,如果您的主要活動(讓我們稱之為A)launchMode設置為singleTask,並且A啟動了活動B,那么單擊主頁按鈕將破壞歷史堆棧並重新啟動應用程序將帶您回到A而不是B.

我將launchMode設置為singleTask,因為我有持久通知,並且我不想在用戶單擊通知時顯示主活動的多個實例。

有什么我想念的東西可以讓我滿足兩者的需要嗎?

所以我問是否有一種方法可以確保無論何時用戶希望啟動應用程序,無論是否通知,都可以將他帶回到最后(當前)活動。

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

謝謝

安德烈亞斯

我使用以下代碼來避免活動的多個實例

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);

改變清單看起來不適合我

您是否嘗試將launchMode設置為singleTop以應用於應用中的所有活動? 因為我從您的查詢得到的是主要活動不是singleTop,因此一旦主要活動從通知活動啟動的活動啟動,可能會導致主要活動的另一個實例被調用。

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

我遇到了兩個問題。 只有在這種情況下,通知才能完美: - 使用主活動中的后退按鈕(歷史記錄僅包含該活動) - 不使用主頁按鈕 - 如果您正在呼叫的活動位於頂部且處於活動狀態,則不使用通知

在任何其他情況下,通知不能再通過使用“new Intent(...)”在活動的前台調用

我已經找到了清單選項和意圖標志的煉金術組合,以獲得我需要的東西:

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"

在元素內部。

現在我有一個產生主要活動的通知(如果該活動尚未在前台)並且即使通過按下主頁按鈕和/或后退按鈕活動“關閉”,其行為也是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM