谨以文章记录学习历程,如有错误还请指明。
Activity生命周期
首先放上Google Develop Guides中的Activity完整的生命周期示意图:

回调初步解读
onCreate():创建活动时调用。onStart():当活动进入可见状态时调用,使得活动可见但不可与用户交互。onResume():活动进入前台时调用,可与用户交互。onPause():活动不持有用户焦点但依然可见时调用。活动仍可见,但停止与用户交互,比如弹窗,锁屏等onStop():活动不可见时调用onDestroy():活动退出,被销毁时调用onRestart():活动由不可见重新返回前台时调用。依次调用onRestart()->onStart()->onResume()
回调方法中进行的操作
onCreate():在这个方法中,执行基本的应用程序启动逻辑,这种逻辑应该只在活动的整个生命周期中发生一次。如将数据绑定到ListView,声明范围变量等。同时该方法接收一个savedInstanceState参数,是用来恢复之前保存过状态的Bundle对象。后面我们会介绍。onStart():该方法中初始化维护UI的组件,如注册一个监听UI变化的广播。onResume():在这个方法中,应该初始化在onPause()中释放的组件,如初始化camera,同时执行活动每次进入前台时候都需要的初始化操作,如开始动画与初始化哪些只有在获取用户焦点时才需要得到组件,如上下文菜单。onPause():释放系统资源,例如广播接收器、处理传感器(如GPS)或任何可能影响电池寿命的资源。onStop():释放几乎所有不需要的资源,如上述onStart()中创建的广播,同时在此方法中执行耗时的释放资源的操作,如保存数据,网络调用,数据库事务等。同时很重要的一点,需要在此方法中释放可能导致内存泄漏的资源,因为系统因为内存紧张而杀死活动进程时,不会调用最后的onDestroy()方法。onDestroy():释放在onCreate()中初始化的活动所能使用的全局资源。在任何一个生命周期回调方法中调用
finish()方法时,系统会直接调用onDestroy()方法,而跳过这之前的所有回调过程。onRestart():由于onStart()的存在,这个方法好像没什么使用场景。
为什么在onStop()中释放耗时资源而不是在onPause()中?
原因:在两个Activity A,B中,当从A中startActivity()或startActivityForResult()启动B时,分别以如下的顺序调用生命周期的回调方法:
Activity A的

本文详细介绍了Activity和Fragment的生命周期,包括各个回调方法的调用顺序,以及在不同场景下的应用。此外,还讨论了Activity状态的保存与恢复,如何时保存状态,如何恢复,以及注意事项。最后,探讨了Activity与Fragment生命周期的联系,帮助读者深入理解它们在Android开发中的作用。
最低0.47元/天 解锁文章
2104

被折叠的 条评论
为什么被折叠?



