我正在制作一个演示来了解后台和活动生命周期。
我做了:
我启动了此应用,并显示了主要活动。然后按一个按钮显示对话框,然后打开MainActivityDialog。然后我再次按下MainActivityDialog上的按钮,然后打开BActivity。最后,我按了后退按钮。
MainActivity -> MainActivityDialog -> BActivity ---Back---> MainActivityDialog
以下是此应用的日志:
我的问题是:
为什么从MainActivityDialog启动BActivity后MainActivity会停止?然后在调用BActivity生命周期方法之后,为什么MainActivityDialog会被停止?
在BActivity中按下后退按钮后,MainActivity首先启动,然后MainActivityDialog启动,然后MainActivityDialog恢复?
答案 0 :(得分:1)
对多个活动的onStop()
和onDestroy()
的调用顺序是不确定的。
如果您的活动堆栈中有多个活动在屏幕上不再可见,Android可以随时调用onStop()
,并按照其想要的顺序。这仅表示活动不再对用户可见。您不能依赖onStop()
次呼叫多个活动的顺序。
onDestroy()
也是如此。该活动结束后,Android可能会在活动上调用onDestroy()
。如果您的任务中有多个已完成的活动,Android可以随时根据需要以任何顺序调用onDestroy()
。这也是不确定的。对onDestroy()
的调用只是告知活动它不再有效,并且它应该释放它可能拥有的任何资源。
无法保证onStop()
或onDestroy()
将被称为。保证的最后一个生命周期调用是onPause()
。之后,Android可以在不调用任何其他生命周期方法的情况下终止进程。
在第二个问题中,您想知道为什么,在用户按下BActivity
上的“返回”按钮后,MainActivity
首先开始,然后是MainActivityDialog
。原因是MainActivity
在屏幕FIRST上可见,然后MainActivityDialog
在 MainActivity
上的屏幕上可见(因为MainActivityDialog
是对话 - 主题,它不会覆盖整个屏幕,你可以在其下方看到MainActivity
的部分内容。)
答案 1 :(得分:0)
我不是Android的专业人士,但由于还没有人回答,我会尽我所能。我想帮助,因为我也是通过做你喜欢的事情(使用log cat来看看activiti的当前状态)来学习android。
为什么MainActivity在启动BActivity后停止 MainActivityDialog?
每次开始新活动时,旧活动将始终暂停/停止。
然后在调用BActivity生命周期方法之后,为什么 MainActivityDialog被停止了吗?
由于现在当前有效活动为BActivity
,换句话说:MainActivityDialog
未处于有效/可见状态,因此已停止/暂停。
在BActivity中按下后退按钮后,MainActivity首先启动 然后MainActivityDialog启动,然后MainActivityDialog恢复?
是的,因为您从MainActivityDialog
开始MainActivity
,所以MainActivity
将首先重新启动。
请随时发表评论,我还在学习:)。