0

在我的應用程序中有一個活動的別名:MyActivityMyAliasActivity登記在清單。別名的目的是提供額外的意圖過濾器。用戶可以在運行時啓用/禁用此功能。活動和別名已獲得singleTop修飾符。但是,如果我在禁用組件的情況下啓動我的應用(頂部爲MyActivity),那麼我啓用它,並廣播匹配意圖過濾器的事件,MyActivity被再次創建(通過別名) - 我'已經有兩個人在背後是不受歡迎的。活動別名啓用單頂

他可以以任何方式處理?我需要在背後只有一個活動。

回答

0

您應該使用singleTask而不是singleTopsingleTask將保證您在backStack中只有一個活動的實例。如果您使用singleTask launchMode第二次啓動活動,則將運行onNewIntent而不是創建新的活動。另一種解決方案是使用singleInstance,這與singleTask幾乎相同,只保留一個Activity實例,如果已創建,則運行onNewIntent

對於這裏的更多信息是如何工作的一個很好的解釋:

https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

谷歌參考:

https://developer.android.com/guide/topics/manifest/activity-element.html

+0

您的解決方案確實工作,然而,加入'singleTask'防止活動正確處理onActivityResult。由於我的項目是附加到活動的庫,我不確定是否可以要求用戶使用'singleTask'。如果活動位於頂部,我認爲'singleTop'和'singleTask'的作用相似。顯然他們不... – Mohru

+0

你也可以使用'singleInstance',可能更適合你的需求,並且與singleTask的工作方式類似 – Ricardo

+0

有關更多信息,標準和singleTop的工作方式相同,singleTask和singleInstance的工作方式相似 – Ricardo