我有一個Activity,它基本上是我的主要活動,其啓動模式是單個實例。但由於singleInstance,onActivityResult()
回調不會觸發。如果我將清單文件中的啓動模式更改爲任何其他模式,則工作正常。如果活動的啓動模式是singleInstance,onActivityResult不會觸發
你能解釋爲什麼這個回調不起作用嗎?
我有一個Activity,它基本上是我的主要活動,其啓動模式是單個實例。但由於singleInstance,onActivityResult()
回調不會觸發。如果我將清單文件中的啓動模式更改爲任何其他模式,則工作正常。如果活動的啓動模式是singleInstance,onActivityResult不會觸發
你能解釋爲什麼這個回調不起作用嗎?
工作,我認爲,問題是,singleInstance不讓被叫活動在相同的任務調用者的存在,因此它可以在不值返回給調用者。
考慮使用singleTask代替:
singleTask
系統建立在 根新的任務和路線 意圖它的活性。但是,如果活動的實例 已存在,則系統會通過調用onNewIntent()方法將意圖路由到現有的 實例,而不是 創建一個新實例。
singleInstance
與 「singleTask」,除了 系統不啓動任何其他 活動納入拿着 實例的任務。該活動始終是其任務的唯一成員,也是唯一的成員 。
http://developer.android.com/guide/topics/manifest/activity-element.html
「singleInstance」活動,不允許其他活動成爲其任務的一部分。這是該任務中唯一的活動。如果它開始另一項活動,那麼該活動將分配給其他任務。該活動始終是其任務的唯一成員。
我想onActivityResult
不會singleInstance
如果活動是singleInstance
,這將是該任務的唯一一所以它永遠是任務的頂部。所以當你撥打startActivityForResult
時,它會立即觸發回調方法。
您不能使用singleInstance
或singleTask
與startActivityForResult
方法。
標準模式或singleTop啓動模式將解決此問題。
如果'onActivityResult'依賴於同一個任務中的父和子都有,那麼不應該記錄在某處?我正在處理通過'onActivityResult' wtf調用的間歇性失敗。 – mwengler 2012-07-29 19:33:20
我不相信這是正確的,我試過了,SingleTask在完成時沒有激活ActivityResult。這個StackOverflow似乎表明了同樣的事情:http://stackoverflow.com/questions/8960072/onactivityresult-with-launchmode-singletask – 2013-06-21 00:26:49
@ jt-gilkeson你鏈接到的問題是談論**目標的啓動模式* *'活動'(即:你正在嘗試發射的那個。OP的問題是討論**調用**'Activity'的啓動模式(即:調用'startActivityForResult()')的啓動模式。這個答案是正確的,因爲具有啓動模式'singleTask' **的'Activity'可以**啓動其他活動到其任務中(但是具有啓動模式「singleInstance」的'Activity'不能)。 – 2017-09-14 13:16:11