前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发:5分钟解析Activity&Fragment生命周期

Android开发:5分钟解析Activity&Fragment生命周期

作者头像
Carson.Ho
发布2019-02-22 10:16:22
1.3K0
发布2019-02-22 10:16:22
举报
文章被收录于专栏:Android知识分享Android知识分享

前言

本文将对Android开发中的Activity&Fragment生命周期进行全面解析

Activity生命周期

先来看张官方说明图

Activity生命周期
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()状态)
Pause
Pause

此时退出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的生命周期

先来看张官方说明图

Fragment的生命周期
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的生命周期很相似,以下是对比图

Fragment和Activity的生命周期对比
Fragment和Activity的生命周期对比

总结

本文对Android的Activity&Fragment生命周期进行了全面介绍,接下来会介绍继续介绍Android开发中的相关知识,有兴趣可以继续关注Carson_Ho的CSDN博客

请点赞!因为你们的赞同/鼓励是我写作的最大动力!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Activity生命周期
    • 先来看张官方说明图
      • 详细解读每个方法的调用场景
        • Activity整个生命周期的完全解读
        • Fragment的生命周期
          • 先来看张官方说明图
            • 详细解读每个方法的调用场景
            • fragment生命周期解析
            • 其他场景的调用
            • Fragment和Activity的生命周期很相似,以下是对比图
            • 总结
        • 请点赞!因为你们的赞同/鼓励是我写作的最大动力!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档