2016-04-21 83 views
1

我的應用程序有一個邏輯層次的活動,具體如下:安卓導航通過活動層次

Activity Hierarchy

我試圖同時檢查他們是否正在運行整個活動進行導航。例如:

主菜單>活動A1>活動A2。

現在,如果我回到主菜單,是否有方法檢查活動A2是否已在運行,如果是,直接跳到該活動?

我認爲設置android:launchMode="singleTask"到活動A1可能會訣竅,並閱讀有關android:allowTaskReparenting屬性。但我不確定使用什麼來實現我想要的。

+0

您是否有興趣根據導航歷史或特別是在後退堆棧重新排序來作出決定? –

+0

@MaximG導航歷史不是一個真正值得關注的問題,除非「A類」中的一項或多項活動已創建並且未被銷燬 - 在這種情況下,我需要導航到層次結構中最深的部分 – justbourv

+1

您是否檢查過http ://developer.android.com/guide/components/tasks-and-back-stack.html? –

回答

1

使用一個主機Activity(作爲導航控制器)和許多碎片會更容易。當前片段會回調活動,因此它會決定如何在圖表上導航。

如果您確實想要堅持使用許多活動的圖表,默認行爲 - 同一過程中的所有活動都將保持活動狀態。 Android操作系統只能清理/終止進程,而不是活動(文檔有點模糊)。您可以使用意圖。 FLAG_ACTIVITY_NO_HISTORY用於中間活動,所以只有root用戶將在堆棧中。

有一種方法可以用ActivityManager調查返回堆棧,但不推薦使用。

+0

理想情況下,我希望啓動任何活動在特定任務之上(使用android:launchMode =「singleTask」創建)。根據我的理解,沒有辦法做到這一點?也許我會重做所有東西,並製作碎片 – justbourv