重温下Android和Fragment生命周期,理解生命周期方法的作用,什么时候调用,可以做一些什么操作。

1、Android生命周期

1.1 生命周期图

1.2 生命周期函数说明

  • onCreate:Activity正在创建,生命周期的第一个方法,需要setContentView加载layout。这里不建议耗时操作,只做layout和控件初始化。此方法传递一个 Bundle 对象,可以获取上一个Activity 的状态。
  • onStart:Activity正在启动,此时Activity已处于可见状态,只是还没有在前台显示,因此无法与用户进行交互,这里也可以初始化控件,但官方推荐在onCreate进行。如果 Activity 转入前台,则后接 onResume,如果 Activity 转入隐藏状态,则后接 onStop。
  • onResume:Activity已在前台可见,可以跟用户进行交互,并且该Activity处于堆栈的顶层,可在此初始化一些资源,后接onPause方法。
  • onPause:跳转到其他activity时调用,此方法中可以做一些数据存储或者动画停止或者资源回收的操作,但不能太耗时,因为android中指定onPause在500ms內没有执行完毕的话就会强制关闭Activity。如果Activity返回前台,则后接onResume,如果Activity转入对用户不可见状态,则后接onStop。
  • onStop:表示Activity即将停止或者完全被覆盖,此时Activity不可见,仅在后台运行,也就是还在内存中,还没有被销毁,可以做一下非耗时操作。如果Activity恢复与用户的交互,则后接onRestart,如果Activity被销毁,则后接onDestroy
  • onRestart:Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法在,始终后接onStart。
  • onDestory:在Activity被销毁前调用,activity结束(调用finish)或者系统内存不够需销毁activity时调用,可以根据isFinishing()方法区分这两种情形。可做回收工作和最终的资源释放。

    2、Fragment生命周期

    2.1 生命周期图

    2.2 生命周期函数说明

    fragment被创建的时候,经历包含onAttach、onCreate、onCreateView、onActivityCreated方法;fragment对用户可见的时候,经历包含onStart、onResume方法;fragment进入“后台模式”的时候,经历onPause、onStop方法;fragment被销毁了(或者持有它的activity被销毁了),经历包含onPause、onStop、onDestroyView、onDestroy、onDetach方法;并且可用onCreate、onCreateView、onActivityCreated方法Bundle对象保存一个fragment的对象。

  • onAttach:当Fragment与Activity发生关联时调用
  • onCreate:创建Fragment时被回调,经历暂停或停止状态继而恢复后,想保留Fragment的基本组件,则在此进行初始化。
  • onCreateView:首次绘制页面时候调用,在此可以创建View,也可以返回null,这样不建议耗时操作。
  • onActivityCreated:Fragment绑定Activity,在onCreate方法已经执行完成并返回,在该方法内可以进行与Activity交互的UI操作,不能在此之前跟Activity进行交互。
  • onStart:启动 Fragment 时被回调,此时Fragment可见,只是还没有在前台显示,因此无法与用户进行交互
  • onResume:Fragment在前台可见,处于活动状态,用户可与之交互
  • onPause:Fragment处于暂停状态,但依然可见,用户不能与之交互
  • onStop:停止Fragment回调,Fragment完全不可见
  • onDestoryView:销毁与Fragment有关的视图,但未与Activity解除绑定
  • onDestory:销毁 Fragment 时被回调,通常按Back键退出或者Fragment被回收时调用此方法,此后接onDetach
  • onDetach:与onAttach相对应,当Fragment与Activity关联被取消时调用
  • setUserVisibleHint:调用次方法可以设置Fragment可见或者不可见。可以调用getUserVisibleHint()获得Fragment的可见或不可见状态,如果可见则进行懒加载操作

重温Android和Fragment生命周期的更多相关文章

  1. Android中Fragment生命周期和基本用法

    1.基本概念 1. Fragment是什么? Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fra ...

  2. Android Activity Fragment 生命周期

    从开源项目中看到 这个,就情不自禁的收藏了~ https://github.com/xxv/android-lifecycle

  3. Android之——Fragment生命周期(日志截图版)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46867159

  4. Android零基础入门第86节:探究Fragment生命周期

    一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用.Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的 ...

  5. Android Fragment 生命周期及其API使用(建议使用自定义View替换Fragment)

    我为什么不主张使用Fragment Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 ) 生命周期回调说明: onAttach ...

  6. Android Activity生命周期以及Fragment生命周期的区别与分析

    Android Fragment生命周期图: Activity生命周期图: 对照图: Fragment生命周期分析: 1. 当一个fragment被创建的时候,它会经历以下状态. onAttach() ...

  7. Android Fragment 生命周期及其正确使用(建议使用自定义View替换Fragment)

    使用Fragment 官方例子中显示: 例如:一个学生Fragment,需要传入studentId,进行http请求显示,那么setArguments后防止杀掉Fragment后,参数为0,显示不了数 ...

  8. Android之Fragment学习笔记②(Fragment生命周期)

    一. Fragment生命周期图                                  二.Fragment生命周期方法介绍 Fragment的生命周期和activity生命周期很像,其生 ...

  9. 【Android开发】之Fragment生命周期

    上一篇博客我们讲到了,Fragment的基本使用,相信大家都已经了解怎么去使用了.如果还有不懂得同学可以去看一下,传送门.现在我们来讲解一下Fragment的生命周期. 一.Fragment的事务 再 ...

随机推荐

  1. 简单粗暴的方式解决eclipse下安装STS失败的问题

    直接去Spring官网下载,spring定制eclipse https://spring.io/tools

  2. linux初学者-pxe装机篇

    linux初学者-pxe装机篇 PXE的网络装机是客户机从自己的网卡启动,向本网络中的DHCP服务器索取ip,并从本网络的TFTP服务器中索取启动文件进行装机.此装机需要kickstart.tftp. ...

  3. python下载报错:Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问

    更新pip模块的版本:python -m pip install --upgrade pip 但是遇到报错提示: Could not install packages due to an Enviro ...

  4. 最新try2hack全详解

    第一题http://www.try2hack.nl/levels/: 方法:直接右键看网页源码 第二题http://www.try2hack.nl/levels/level2-xfdgnh.xhtml ...

  5. Appium自动化测试环境搭建

    前言 Appium是一个开源的自动化测试框架,支持跨平台,支持多种编程语言,可用于原生,混合和移动web应用程序,使用webdriver驱动ios,android应用程序.那么为了学习app自动化测试 ...

  6. powermockito单元测试之深入实践

    概述 由于最近工作需要, 在项目中要做单元测试, 以达到指定的测试用例覆盖率指标.项目中我们引入的powermockito来编写测试用例, JaCoCo来监控单元测试覆盖率.关于框架的选择, 网上讨论 ...

  7. 制造资源计划(Manufacturing Resource Planning,Mrp II)

        制造资源计划(Manufacturing Resource Planning,Mrp II)       概括: 以物料需求计划(MRP)为核心的企业生产管理计划系统,MRP II 是以工业工 ...

  8. containerd与kubernetes集成

    kubernetes集群三步安装 概念介绍 cri (Container runtime interface) cri is a containerd plugin implementation of ...

  9. 直方图均衡基本原理及Python实现

    1. 基本原理 通过一个变换,将输入图像的灰度级转换为`均匀分布`,变换后的灰度级的概率密度函数为 $$P_s(s) = \frac{1}{L-1}$$ 直方图均衡的变换为 $$s = T(r) = ...

  10. 【Java笔记】【Java核心技术卷1】chapter3 D2注释

    package chapter3; /** * 文档注释 *@author lp *@version 1 **/ public class D2注释 { //单行注释 /* 长注释 */ }