2011-09-02 82 views
1

我知道有很多關於此的討論,但我無法讓它正常工作。如何切換到正在運行的活動正在運行活動

Activity(A)= singleTop並且可以接收android.intent.action.SEND
Activity(B)= singleTask

當我從Android庫中選擇一個圖像,並用(A)
的(A)打開它被重定向(B)的意圖。

這是工作正常,如果我按主頁並從選擇(A)從發射器 (B)被帶到前面。這就是我想要的,用戶可以使用圖片繼續,

現在,如果我HOME再次按下並打開Android的畫廊(A)是
onRestart()OnStart()onResume()。我看到(A)。

這是我喜歡切換到(B)的問題,因爲用戶需要完成他正在做的事情。

我看不到一個很好的方法來做到這一點,爲什麼Android畫廊恢復(A)?
也許我做了什麼,因爲打開Android圖庫帶給我的(A)
這是基於在問題有限的信息可以推理任何幫助,將不勝感激

+0

可以告訴你想要做什麼減去技術術語。我很困惑 –

+0

@哈沙我不明白你在說什麼 – Erik

回答

0

UPDATE
我知道這是一個複雜的情況。 (B)發射後,我通過簡單地殺死(A)/ finish()來制定工作解決方案。現在,

如果我按HOME並再次打開Android圖庫,我會看到Android圖庫。
如果我按HOME並打開A我看B.
如果我從B按回我看畫廊

0

錯誤,假設A在重定向意圖到B公司的onCreate()。

1)打開畫廊,選擇圖像,以A開放,重定向它到B

Task1 has stack has Gallery, A, B (B on top of the stack) 

2)按家中,從發射器選擇一個

Launcher app creates a new task, new task2's stack has a new instance of activity A, its onCreate() is invoked and intent is redirected to B. B being a singleTask is moved from Task1 to Task2 and its onNewIntent() would be invoked. 

3)按家庭,和打開圖庫

Task1 is resumed and the top of the stack is now A. Its onRestart(), onStart() and onResume() is invoked. 

這就是場景,您可以嘗試從A的onStart()重定向目標,或者不要有B作爲singleTask。

+0

你的絕對正確我認爲,這是我對正在發生的事情的假設,(2)onNewIntent()正在發射,正如你所說。現在,當我們知道問題是什麼,並且我們有一個答案 - 「從A的onStart()重定向意圖」。我該怎麼做,是否有一些可靠的方法來確定B是否正在運行,因爲如果它沒有運行,我不想啓動B.如果你知道你能否更新你的答案 – Erik

+1

嗯,我認爲B總是在你提到「將意圖重定向到B」並且它在A的onCreate()中完成時啓動的,這就是爲什麼我建議將它移動到A的onStart )。如果假設不正確,請澄清併發布「重定向意向」代碼 – ethan

+0

謝謝。我知道這是一個錯綜複雜的場景。 (B)發佈後簡單地殺死(A)/ finish(),我已經制定了一個工作解決方案。現在,如果我按HOME並再次打開Android畫廊,將新(A)帶入(B)堆棧。 – Erik