1、首先先上图

Activity                                                                                                                                      Fragment

               

                                                                                         对比图                

2、Activity的生命周期分析说明

onCreated()是activity第一次被启动时执行的,主要是初始化一些变量(启动第一步)

onRestart()是当前activity重新被启动时调用的;绑定一些监听器等(可见状态)

onStart()是activity界面被显示出来的时候执行的(可见状态)。

onResume()是当该activity与用户能进行交互时被执行,(能获取到焦点)

onPause()是另一个activity被启动,当前的activity就被暂停了,一般在该函数中执行保存当前的数据(被遮挡住)。

onStop()表示另一个activity被启动完成时,当前activity对用户同时又完全不可见时才调用的(不可见状态)。

onDestroy()是退出当前activity时调用的,当然如果程序中调用finish()或者说android系统当前资源不够用时就会被调用(销毁)。
当用多个activity在执行时,这时候android系统会自动将这些activity压入栈中并且总是显示最顶的那个activity,这个栈在android叫做task,但是这个栈只支持压入和弹出操作,不支持排序插入等操作。
Activity的7个生命周期函数中的onStop()函数被调用时是在其对应的activity被另外的activity完全遮挡的时候,如果只有部分遮挡,则不会被调用。部分遮挡一般是以消息activtiy的形式出现,这个只需在AndroidManifest.xml中将其对于的activity的主题设置theme中更改即可。当系统资源不够时,其中onPause(),onStop(),onDestroy()是有可能被系统kill掉的,但其它4个是不会被kill掉。

实验验证:连个Activity相互跳转,ActivityA设置一个button跳转到ActivityB

一开始程序运行时是首先调用第1个activity的onCreate(),onStart(),onResume()函数,然后按下button后,调用第1个activity的onPause(),和第2个activity的onCreate(),onStart(),onResume()函数,然后接着调用第1个activity的onStop(),当按下系统返回键时,这时会调用第2个activity的onPause(),接着是第1个activity的onRestart(),onStart(),onResume(), 最后是调用第2个的onStop()和onDestroy().

3、Fragment的生命周期分析说明

1. 当一个fragment被创建的时候,它会经历以下状态.

  • onAttach()
  • onCreate()
  • onCreateView()
  • onActivityCreated()

2. 当这个fragment对用户可见的时候,它会经历以下状态。

  • onStart()
  • onResume()

3. 当这个fragment进入“后台模式”的时候,它会经历以下状态。

  • onPause()
  • onStop()

4. 当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。

  • onPause()
  • onStop()
  • onDestroyView()
  • onDestroy() // 本来漏掉类这个回调,感谢xiangxue336提出。
  • onDetach()

5. 就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。

  • onCreate()
  • onCreateView()
  • onActivityCreated()

6. fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。

  • onAttached() —— 当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
  • onCreateView() —— 当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。
  • onActivityCreated() —— 当activity的onCreated()方法返回后调用此方法
  • onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。
  • onDetach() —— 当fragment和activity分离的时候,调用这个方法。

一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。

转载于:https://www.cnblogs.com/seven-sky/p/5316962.html

Activity与Fragment的生命周期相关推荐

  1. Activity与Fragment的生命周期详解

    在安卓中Activity与Fragment是非常相似的两个类,它们各自都拥有自己的生命周期,且都可以用来显示布局文件中的视图.其中Activity是通过setContenView()显示视图,而Fra ...

  2. 安卓APP_ Fragment(3)—— Fragment的生命周期

    摘自:安卓APP_ Fragment(3)-- Fragment的生命周期 作者:丶PURSUING 发布时间: 2021-04-16 22:32:12 网址:https://blog.csdn.ne ...

  3. android viewpager fragment 生命周期,ViewPager中Fragment的生命周期

    网上有很多Fragment生命周期的帖子,但是看了一下,没有找到自己想了解的东西,于是决定自己动手体验一下这个生命周期.主要想了解以下几个问题: Activity中的Fragment的生命周期 Vie ...

  4. Fragment的生命周期同一Activity下不同Fragment之间的通信

    Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方 ...

  5. ViewPager与Fragment结合使用,以及切换的时候Fragment 的生命周期

    下面要做的效果图下图 首先我们创建一个适配器如下 public class FraPagerAdapter extends FragmentPagerAdapter {private List< ...

  6. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期

    Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...

  7. ViewPager中Fragment的生命周期和FragmentPageAdapter与FragmentStatePageAdapter对其的影响

    首先,我们创建一个Activity和一个Fragment,并在Fragment的各个生命周期打好日志,并把Fragments丢进Viewpager,这里我们往Viewpager里丢了3个Fragmen ...

  8. Fragment 的生命周期

    Fragment的生命周期,按照正常顺序来看依次是: onAttach(),老式的方法是以Activity为参数,后来改成了context做参数.但是其实我实际项目中并没有重写这一方法,因为其父类方法 ...

  9. Android系列之Fragment(二)----Fragment的生命周期和返回栈

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

最新文章

  1. solr 下载 有dist目录的(6需要8)
  2. Java里面获取当前服务器的IP地址
  3. FreeMarker_模板引擎_代码自动生成器_源码下载
  4. iPhone清理喇叭灰尘_厉害了,iPhone 专用的网购商品历史最低价查询工具
  5. C++中对象初始化赋值是否需要调用operator=函数
  6. 2020服务器虚拟化市场容量,2020年服务器市场的五大技术和市场趋势
  7. NOIP模拟题 栅栏
  8. 学python数据分析心得体会800字_学习 Python 数据分析的正确姿势
  9. App测试工具大全,收藏这篇就够了
  10. Codeforces-785-D(范德蒙恒等式)
  11. 奔跑的小人,在屏幕上从左向右移动”的代码实现“小人在屏幕上从右向左移动” 按下键“A”,小人向左移动;按下键“D”,小人向右移动; 按下键“W”,小人向上移动;按下键“X”,小人向下移动; 通过主函数
  12. 拯救懒癌患者,京东订单自动写评价脚本!
  13. 前端用pdfjs实现预览PDF
  14. iOS 面试题集合~[有答案]
  15. mac os php Phalcon拓展
  16. 水文预报中的确定性系数如何计算确定
  17. 虚拟机无法玩腾讯游戏该怎么办
  18. 搭建个人站点——服务器环境(Linux)及工具准备(一)
  19. 全球市场动荡持续,澳元和液化天然气(LNG)价格跌至近11年最低水平
  20. HMS Core Discovery第15期回顾长文|构筑立体世界,共造沉浸式营销

热门文章

  1. 2021-07-07 https://github.com/pasu/ExamplesforCesium/wiki
  2. 2018-06-12 python读二进制文件
  3. 容器大小_C++复习篇(7)序列式容器vector
  4. 谷歌和ESRI眼中的Web Mercator
  5. 轻松解决idea一直卡在Resolving Maven dependencies的问题
  6. Adobe AIR移动App的互相调用实现方式
  7. VS2008创建win32动态链接库图文流程
  8. 小程序和网站中无限滚动的实现
  9. linux device attr,DEVICE_ATTR的使用
  10. 判断拐点的条件_专业的交易者如何捕捉振荡区间的双向拐点。上篇