Activity&Fragment生命周期

参考1
参考2

Activity生命周期

先来看张官方说明图
在这里插入图片描述

详细解读每个方法的调用场景

  • onCreate():当创建启动时调用

  • onStart():当处于可见状态时调用
    调用场景:Activity启动:onCreate()->onStart()->onResume

  • onResume ()
    调用场景:
    1.当MainActivity第一次启动时:onCreate()->onStart()->onResume ;
    2.“The activity comes to the foreground”:即当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用,比如说解屏、弹窗消失

  • onPause()
    调用场景:“Activity comes to the foreground”,即当SecondActivity启动时且不完全挡住MainActivity时调用(即MainActivity不在UI最顶层,但依然可见,比如弹窗、锁屏,如下图便是MainActivity处于onPause()状态)
    在这里插入图片描述
    onPause.png

此时退出SecondActivity(点击Back键),即MainActivity重新回到当前Activity时(UI最顶层),调用onResume(),即onResume ()是在当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用

  • onStop()
    调用场景:“the activity is no longer visible”,即当SecondActivity启动且完全挡住MainActivity时调用(或按HOME键到主屏)
    (MainActivity不在UI最顶层且完全被挡住时)
    此时如果退出(点击Back键)SecondActivity(或回到该应用),调用onRestart()。即onRestart()是当MainActivity从onStop()重新回到当前Activity(UI最顶层)时调用
  • onDestory()
    当MainActivity退出时调用(点击Back键)
    调用finsh()

Activity整个生命周期的完全解读

  • 启动Activity
    系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

  • 当前Activity被其他Activity覆盖一部分其上或被锁屏
    系统会调用onPause方法,暂停当前Activity的执行

  • 当前Activity由被覆盖(一部分)状态回到前台或解锁屏
    系统会调用onResume方法,再次进入运行状态。

  • 当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台
    系统会先调用onPause方法,然后调用onStop方法,进入停滞状态

  • 用户后退回到此Activity
    系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

  • 当前Activity处于被覆盖状态或者后台不可见状态,当更高优先级的apps需要内存,系统内存不足
    系统就会杀死当前Activity

  • 而后用户退回当前Activity
    再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

  • 用户退出当前Activity
    系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

Fragment的生命周期

先来看张官方说明图
在这里插入图片描述
详细解读每个方法的调用场景

  • onAttach方法
    Fragment和Activity建立关联的时候调用(获得activity的传递的值)
  • onCreateView方法
    为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局,可以使用线程更新UI)
  • onActivityCreated方法
    当Activity中的onCreate方法执行完后调用(表示activity执行oncreate方法完成了的时候会调用此方法)
  • onDestroyView方法
    Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局)
  • onDetach方法
    Fragment和Activity解除关联的时候调用(脱离activity)

fragment生命周期解析

  • 当一个fragment被创建的时候:
    onAttach()
    onCreate()
    onCreateView()
    onActivityCreated()

  • 当这个fragment对用户可见的时候,它会经历以下状态。
    onStart()
    onResume()

1.2 可以理解为从创建到显示(或切换)

  • 当这个fragment进入“后台模式”的时候,它会经历以下状态。
    onPause()
    onStop()

  • 当这个fragment被销毁了(或者持有它的activity被销毁了):
    onPause()
    onStop()
    onDestroyView()
    onDestroy()
    onDetach()

  • 就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
    onCreate()
    onCreateView()
    onActivityCreated()

其他场景的调用

  • 屏幕灭掉
    onPause() onSaveInstanceState() onStop()

  • 屏幕解锁
    onStart() onResume()

  • 切换到其他Fragment
    onPause() onStop() onDestroyView()

  • 切换回本身的Fragment
    onCreateView() onActivityCreated() onStart() onResume()

  • 回到桌面
    onPause() onSaveInstanceState() onStop()

  • 回到应用
    onStart() onResume()

  • 退出应用
    onPause() onStop() onDestroyView() onDestroy() onDetach()

Fragment和Activity的生命周期很相似,以下是对比图

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Activity生命周期: 1. onCreate():当Activity被创建时调用,可以在这里初始化控件和变量等。 2. onStart():当Activity可见但未获取焦点时调用,可以在这里进行一些UI更新等操作。 3. onResume():当Activity获取焦点并可与用户交互时调用,可以在这里开始动画、播放音乐等操作。 4. onPause():当Activity失去焦点但仍可见时调用,可以在这里暂停动画、音乐等操作。 5. onStop():当Activity不再可见时调用,可以在这里释放一些资源等操作。 6. onRestart():当Activity从不可见状态重新变为可见状态时调用,例如从后台切换回来。 7. onDestroy():当Activity被销毁时调用,可以在这里释放所有资源。 Fragment生命周期: 1. onAttach():当FragmentActivity发生关联时调用,可以在这里获取Activity中的数据和方法等。 2. onCreate():当Fragment被创建时调用,可以在这里初始化控件和变量等。 3. onCreateView():当Fragment所依附的Activity准备好布局时调用,可以在这里初始化UI布局。 4. onActivityCreated():当Fragment所依附的Activity完成创建时调用,可以在这里进行一些UI更新等操作。 5. onStart():当Fragment可见但未获取焦点时调用,可以在这里进行一些UI更新等操作。 6. onResume():当Fragment获取焦点并可与用户交互时调用,可以在这里开始动画、播放音乐等操作。 7. onPause():当Fragment失去焦点但仍可见时调用,可以在这里暂停动画、音乐等操作。 8. onStop():当Fragment不再可见时调用,可以在这里释放一些资源等操作。 9. onDestroyView():当Fragment所依附的Activity销毁其布局时调用,可以在这里释放与UI相关的资源。 10. onDestroy():当Fragment被销毁时调用,可以在这里释放所有资源。 11. onDetach():当FragmentActivity解除关联时调用,可以在这里释放Activity中的数据和方法等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值