我有一个启动活动(A)调用listview活动(B)调用另一个活动(C)。 当我在活动C和我按Home时,而不是杀死应用程序(或等待Android执行此操作),而不是长按Home并返回到活动C,这是一个奇怪的问题: 当我点击回来时,我回到B.比我有一个后退按钮处理程序,询问用户是否要退出并调用活动上的finish()。当我尝试在这种情况下退出时,活动A再次开始。
在常规操作中,它完成B并且不会返回到A. 为什么???
由于
答案 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()
)。
我希望这能解释你所看到的。