示例:我有一个包含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
我该怎么做?
答案 0 :(得分:1)
答案 1 :(得分:0)
修改强> 您可以在清单文件中为活动添加“singleTaks”或“singleInstance”,并实现onNewIntent()方法。
“singleTaks”
系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已经存在,系统会通过调用onNewIntent()方法将意图路由到现有实例,而不是创建新实例。
“singleInstance”
与“singleTask”相同,但系统不会在持有实例的任务中启动任何其他活动。活动始终是其任务的唯一成员。
答案 2 :(得分:0)
我让每个子活动都扩展了一个基本活动。在基本活动中,我定义了一个onActivityResult(),如果堆栈顶部的活动设置了特定的resultCode,它将强制执行finish()。因此,如果他们点击活动C上的“我的根活动”按钮,它将递归地滚动到活动A.后退按钮保持其功能。
这是一种罕见的情况,因为我会使用“singleTask”,但启动活动A涉及重新加载它的依赖关系,我不想要几个活动C.