详解Activity&Fragment生命周期

谨以文章记录学习历程,如有错误还请指明。

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中startAct

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值