概述
Activity的生命周期一直是学习Android客户端必须掌握的知识之一,包括具体可以重写哪七个方法、Activity跳转时调用哪些方法、顺序是什么样的、以及一些特殊的调用情况等,所以在这篇文章中总结一下。
七个方法
如上图,Activity的七个生命周期如上,他们的应用场景如下:
(1)onCreate():在Activity首次创建时调用。
(2)onStart():在Activity即将对用户可见时调用。
(3)onResume():在Activity即将可交互时调用。
(4)onPause():在Activity即将离开用户可视界面时调用。
(5)onStop():在Activity对用户不再可见时调用。
(6)onRestart():当用户重新进入某Activity时调用,之后会调用onStart()方法。
(7)onDestory():在用户销毁Activity时调用(如退出App)。一些数据库连接的断开、监听器的销毁可以通过重写这个方法实现。
Activity跳转时的调用
假设一个应用场景:用户点击AActivity中的跳转按钮,跳转到BActivity中,且BActivity为首次创建。那么其跳转流程如下:
首先会调用AActivity的onPause()方法,因为此时AActivity即将不可见;然后依次调用BActivity的onCreate()、onStart()、onResume()方法;然后调用AActivity的onStop()方法,因为此时AActivity已经对用户不可见。要注意在一些特殊情况中,跳转并不会调用AActivity的onStop()方法,这将在之后提到。
按返回键时的调用
仍然按上述场景。从BActivity按返回键返回AActivity,此时调用流程如下:
这个逻辑与Activity跳转时差不多,在此不再赘述。
一些特殊情况
(1)调用onRestart()方法的场景:常见的有两个,即当按下主屏键(Home键)后重新返回Activity;或者熄屏后重新亮屏。
(2)跳转Activity时不会调用onStop()方法的场景:Activity的主题是Dialog或Translucent时。这个我个人的理解逻辑是onStop()方法是在“对用户不可见”时才调用的,而“Dialog”是“弹窗”主题,“Translucent”是“透明”主题,都不是“不可见”的情况,所以不会调用onStop()方法。
————————————————————
本文同步更新于我的个人公众号,微信搜索“茶迁”或扫描下面二维码关注,后台回复“Activity的生命周期”即可获得本文推送。欢迎关注~