Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “我如何崩溃?”;儿童活动;?_Android - Fatal编程技术网

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

Android “我如何崩溃?”;儿童活动;?,android,Android,示例:我有一个android应用程序,其中包含3个活动,具有以下行为: 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

示例:我有一个android应用程序,其中包含3个活动,具有以下行为:

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
我如何才能做到这一点?

编辑: 您可以将“SingleTak”或“singleInstance”添加到清单文件中的活动中,并实现onNewIntent()方法

“单打”

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

“单实例”

与“singleTask”相同,只是系统不会向包含实例的任务中启动任何其他活动。活动始终是其任务的唯一成员

签出编辑: 您可以将“SingleTak”或“singleInstance”添加到清单文件中的活动中,并实现onNewIntent()方法

“单打”

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

“单实例”

与“singleTask”相同,只是系统不会向包含实例的任务中启动任何其他活动。活动始终是其任务的唯一成员


查看

查看意向堆栈机械


查看意向堆叠机械


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


这是一个罕见的场景,因为我会使用“singleTask”,但启动活动a需要重新加载其依赖项,我不想将其与活动C耦合起来。

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


这是一个罕见的场景,因为我会使用“singleTask”,但启动活动a需要重新加载它的依赖项,我不想将其与活动C结合起来。

很好,但如果我在活动C上,我将无法返回到活动B->“当用户在活动C上,他们点击“后退”按钮时,它会接受活动B“哦,对不起,虽然您不再需要活动B ICE,但如果我在活动C上,我将无法返回到活动B->“当用户在活动C上单击“后退”按钮时,他们将返回活动B”哦,对不起,我认为您不再需要活动B,您一定要阅读并理解此文档。如果你在赶时间,你要找的是
FLAG\u ACTIVITY\u CLEAR\u TOP
。我花了一个小时阅读了那个文档,里面没有我定义的用例。最接近的是“单一任务”。我希望将活动A配置为使用singleTask,当他们到达活动C并点击“我的根活动”按钮时,它将执行类似“finishTask()”或类似的操作,以便删除子B和C。您一定要阅读并理解此文档。如果你在赶时间,你要找的是
FLAG\u ACTIVITY\u CLEAR\u TOP
。我花了一个小时阅读了那个文档,里面没有我定义的用例。最接近的是“单一任务”。我希望将活动A配置为使用singleTask,当它们到达活动C并点击“我的根活动”按钮时,它将执行类似“finishTask()”或类似的操作,以便删除子B和C。