我如何崩溃“儿童活动”?

时间:2012-03-27 17:25:09

标签: android

示例:我有一个包含3个活动的Android应用程序,它们具有以下行为:

A (Home) -> B -> C

Activity A launches Activity B
Activity B launches Activity C

When user is on Activity B and they hit the Back button, it takes them Activity A
When user is on Activity C and they hit the Back button, it takes them Activity B

我想要的是当用户在活动C上时,如果他们点击“我的根活动”按钮,它将把他们带到活动A而不向活动组添加活动A的新实例。

所以我不想拥有:

 1) A
 2) A-B
 3) A-B-C
 4) A-B-C-A

我想要的是:

 1) A
 2) A-B
 3) A-B-C
 4) A

我该怎么做?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

修改 您可以在清单文件中为活动添加“singleTaks”或“singleInstance”,并实现onNewIntent()方法。

“singleTaks”

系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已经存在,系统会通过调用onNewIntent()方法将意图路由到现有实例,而不是创建新实例。

“singleInstance”

与“singleTask”相同,但系统不会在持有实例的任务中启动任何其他活动。活动始终是其任务的唯一成员。

查看this link

答案 2 :(得分:0)

我让每个子活动都扩展了一个基本活动。在基本活动中,我定义了一个onActivityResult(),如果堆栈顶部的活动设置了特定的resultCode,它将强制执行finish()。因此,如果他们点击活动C上的“我的根活动”按钮,它将递归地滚动到活动A.后退按钮保持其功能。

这是一种罕见的情况,因为我会使用“singleTask”,但启动活动A涉及重新加载它的依赖关系,我不想要几个活动C.