在我的應用程序中有一個活動的別名:MyActivity
和MyAliasActivity
登記在清單。別名的目的是提供額外的意圖過濾器。用戶可以在運行時啓用/禁用此功能。活動和別名已獲得singleTop
修飾符。但是,如果我在禁用組件的情況下啓動我的應用(頂部爲MyActivity
),那麼我啓用它,並廣播匹配意圖過濾器的事件,MyActivity
被再次創建(通過別名) - 我'已經有兩個人在背後是不受歡迎的。活動別名啓用單頂
他可以以任何方式處理?我需要在背後只有一個活動。
在我的應用程序中有一個活動的別名:MyActivity
和MyAliasActivity
登記在清單。別名的目的是提供額外的意圖過濾器。用戶可以在運行時啓用/禁用此功能。活動和別名已獲得singleTop
修飾符。但是,如果我在禁用組件的情況下啓動我的應用(頂部爲MyActivity
),那麼我啓用它,並廣播匹配意圖過濾器的事件,MyActivity
被再次創建(通過別名) - 我'已經有兩個人在背後是不受歡迎的。活動別名啓用單頂
他可以以任何方式處理?我需要在背後只有一個活動。
您應該使用singleTask
而不是singleTop
。 singleTask
將保證您在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
您的解決方案確實工作,然而,加入'singleTask'防止活動正確處理onActivityResult。由於我的項目是附加到活動的庫,我不確定是否可以要求用戶使用'singleTask'。如果活動位於頂部,我認爲'singleTop'和'singleTask'的作用相似。顯然他們不... – Mohru
你也可以使用'singleInstance',可能更適合你的需求,並且與singleTask的工作方式類似 – Ricardo
有關更多信息,標準和singleTop的工作方式相同,singleTask和singleInstance的工作方式相似 – Ricardo