网上有很多关于Activity的生命周期的博文,但是大都是站在生命周期调用方法的角度,并没有从Activity状态转换的角度去想这个问题。
今天看到一篇文章站在Activity的四种状态的角度来阐述Activity的生命周期,感觉对Activity的理解更加深入了。所以写下留作笔记。
Activity有四种状态:
运行状态:Activity位于栈顶,正在与用户交互。
暂停状态:只是暂时失去焦点,比如被另一个Activity的View覆盖,但是没有被完全覆盖。
停止状态:完全失去焦点变为不可见。
销毁状态:被系统销毁。
下面用一张图来说明问题:
详细解释下这张图:
首先,Activity A开始启动的时候要先依次调用OnCreat方法——OnStart方法——OnResume方法,进入前台与用户交互,这时候就进入了运行状态。
之后,如果有另一个Activity B覆盖在了上述Activity A的上边但不是完全覆盖的时候,Activity A 便会调用OnPause进入暂停状态。
这时如果覆盖Activity A 的Activity B退出了,Activity A 会调用OnResume重新回到运行状态 。
如果Activity B没有退出,而Activity A变为完全不可见(比如点击了返回桌面的键),就会调用OnStop进入停止状态。再此被调用,会调用OnRestart——OnStart进入——OnResume进入运行状态。
如果被调用发现由于内存不足等原因应用进程被暂时终止了,Activity需要被重新创建,所以会调用OnCreat方法——OnStart方法——OnResume方法,进入了运行状态。
Activity调用finish方法后,就会调用OnDestroy方法(当然要先执行前边的生命周期中的方法)
不同的Activity对应不容的回调方法,这样理解是不是更容易些了呢?欢迎留言讨论。