2016-04-21 77 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