Android活动生命周期 - 活动从历史记录开始重新启动

时间:2012-03-20 19:47:05

标签: android android-intent android-activity

我有一个启动活动(A)调用listview活动(B)调用另一个活动(C)。 当我在活动C和我按Home时,而不是杀死应用程序(或等待Android执行此操作),而不是长按Home并返回到活动C,这是一个奇怪的问题: 当我点击回来时,我回到B.比我有一个后退按钮处理程序,询问用户是否要退出并调用活动上的finish()。当我尝试在这种情况下退出时,活动A再次开始。

在常规操作中,它完成B并且不会返回到A. 为什么???

由于

2 个答案:

答案 0 :(得分:1)

确保在加载B

时在A上调用finish()

答案 1 :(得分:1)

当应用程序被您(或您或Android)杀死时,托管您的应用程序的进程将被终止。但是,Android会记住活动堆栈的状态(在您的情况下为A-> B-> C)。

当用户返回应用时,Android会为应用创建新流程,并仅重新创建活动堆栈顶部的活动(在本例中为C)。现在,用户按下BACK,这将导致活动C完成,Android将重新创建活动B的实例,然后显示(您将看到对B.onCreate()B.onStart()B.onResume()的调用。 / p>

现在用户再次按BACK。您的后退按钮处理程序尝试在活动A上调用finish(),但没有活动A的实例.Android还没有创建它!当活动B完成时,Android会记住B下面的活动堆栈中有活动A的实例,因此它会重新创建活动A的实例,然后显示(您将看到对A.onCreate()A.onStart()A.onResume())。

我希望这能解释你所看到的。