Android中的活动生命周期

Android中的活动生命周期,android,Android,我有一个应用程序,它有三个活动,我们把它们称为A、B和C A用星形触觉呼叫B 当用户点击后退/取消按钮时,我必须调用活动C,因此我在活动B的OnPause中实现调用活动C,并且我需要从活动C返回,因此我使用startActivityForResult调用活动C,并在活动B中实现ActivityResult方法以获取返回 一切正常,但当活动C完成时,应用程序将返回到活动A,我需要活动B 我必须再次明确地调用活动B,否则我做错了什么?您不应该在按下“后退”按钮时调用另一个活动。后退按钮将从堆栈中弹出

我有一个应用程序,它有三个活动,我们把它们称为A、B和C

A用星形触觉呼叫B

当用户点击后退/取消按钮时,我必须调用活动C,因此我在活动B的OnPause中实现调用活动C,并且我需要从活动C返回,因此我使用startActivityForResult调用活动C,并在活动B中实现ActivityResult方法以获取返回

一切正常,但当活动C完成时,应用程序将返回到活动A,我需要活动B


我必须再次明确地调用活动B,否则我做错了什么?

您不应该在按下“后退”按钮时调用另一个活动。后退按钮将从堆栈中弹出活动(B)。当您从活动B单击后退时,Android将完成该活动并将其杀死。这是一个标准的工作流程,最好不要搞砸。在活动B中放置一些按钮并调用C从中获取结果,然后您将能够在活动B中获得结果。

您不应该在点击“后退”按钮时调用另一个活动。后退按钮将从堆栈中弹出活动(B)。当您从活动B单击后退时,Android将完成该活动并将其杀死。这是一个标准的工作流程,最好不要搞砸。在活动B中放置一些按钮并调用C从中获取结果,然后您将能够在活动B中获得结果。

我真的不确定您希望通过这种行为实现什么。无论如何,您从C返回到A,因为您按下了back键,并且没有覆盖onBackPressed()中的行为。因此,当前活动(B)刚刚完成,因此调用了onPause(),因此C开始。但是,当C变为活动时,活动堆栈上只有A和C


您需要覆盖活动B中的onBackPressed(),然后从那里调用C,忘记onPause()。

我真的不确定您希望通过这种行为实现什么。无论如何,您从C返回到A,因为您按下了back键,并且没有覆盖onBackPressed()中的行为。因此,当前活动(B)刚刚完成,因此调用了onPause(),因此C开始。但是,当C变为活动时,活动堆栈上只有A和C


您需要覆盖活动B中的onBackPressed(),然后从那里调用C,忘记onPause()。

当您到达活动B中的
onPause()
时,它已经关闭,因此当您返回到它时,它将消失。

正如您所说,您可以在完成后从C启动B,也可以在B的
onBackPressed()
中启动C(然后从该方法返回,而不调用super方法)。这将覆盖关闭活动的默认操作。

当您进入活动B中的
onPause()
时,它已在关闭,因此当您返回时,它将消失。
正如您所说,您可以在完成后从C启动B,也可以在B的
onBackPressed()
中启动C(然后从该方法返回,而不调用super方法)。这将覆盖关闭活动的默认操作