文档章节

开源中国 OsChina Android 客户端源码分析(13)Fragment学习

姬鑫
 姬鑫
发布于 2015/11/27 11:17
字数 752
阅读 374
收藏 9

在客户端源码中,我们可以看到大量的Fragment,关于Fragment的相关学习,给大家推荐一篇值得学习的博客:

http://blog.csdn.net/lmj623565791/article/details/37970961

本文 主要介绍 Fragment 和Acitivity生命周期的关系,掌握生命周期后,我们可以灵活的在各个周期进行相应的业务处理。demo中一个Activity    activity 两个 Fragment   first  second   ,通过add 方法添加Fragment,切换时通过hidden 和show方法隐藏和显示。默认首先加载first 。我们复写了Acticity 和  Fragment中的 生命周期,在里面进行简单的打印操作。由于demo简单,不再粘贴上来。



测试汇总情况如下:

1、activity 显示时,只创建了 first的实例,并没有通过事务将first添加到activity中去的话,我们会发现并不会触发first的生命周期;因为你没有将Fragment添加到界面中的话,意味着并没有将界面和Fragment建立关联。

2、activity 显示,创建 first的实例,通过事务将first添加add到activity中去的话,当前可以看到first。生命周期:

     activity :onCreate ,first  :onAttach onCreate onViewCreate   ;

     activity :onStart ,first  :onStart    ;

     activity :onResume,first  :onResume;

3、从first 切换到 secon,second首次加载,声明周期变化:

    first :onHiddenChanged  结果true first隐藏了。  second: onAttach onCreate onViewCreate onStart  onResume;

4、现在在second  按下hom键的周期变化:

    因为first的加载先于second ,我们很轻易地发现  

    first second  activity   依次onPause ; first  second acticity  一次onStop;

5、在4的基础上,重新唤醒应用的周期变化,界面中有onRestart,而Fragment没有的。因此:

   activity  onRestart   ;

   activity  first second  依次onStart      ,activity  first second 一次onResume;

6、当前就在first 再一次的显示first

   first   onHiddenChanged   中其返回值  先true 再false. 意思先把你隐藏 然后再把你显示(不隐藏)

7、按返回键,关闭界面

  first  second  activity   依次 onPause  ;

  first  second  activitu 依次 onStop;

  first  onDestoyView  onDestory  onDetach ;

  second  onDestoyView  onDestory  onDetach ;

  activity  onDestory.

  

   总结:

 1、Fragment 是界面的一部分,界面可以有一个或者多个Fragment组成;

 2、由于Fragment是依附在界面中的,因此,Fragment的生命周期的开始onAttach  晚于 界面的生命周期的开始onCreate;

 3、由于Fragment是依附在界面中的,因此,Fragment的生命周期的结束起始onPause   早于 界面的生命周期的结束起始onPause;

 4、界面中如果有 多个Fragment ,最先加载的Fragment的生命周期无论开始还是结束都先于后来加载的Fragment.

 5、Fragment 第一次加载onHiddenChanged不会回调,切换其他Fragment再切回来到当前的Fragment的时候, 可以根据是否被隐藏的结果  ,来做一些业务处理,比如说“每次看见fragment的时候都向服务器请求数据“。

      希望简单的总结,能帮助到你我。赞顶一下嘛,谢谢!!

© 著作权归作者所有

共有 人打赏支持
姬鑫
粉丝 85
博文 54
码字总数 16632
作品 0
宁波
程序员
加载中

评论(1)

我在注册
终于更新了,谢谢,继续学习!
开源中国 OsChina Android 客户端源码分析(2)滑动菜单DrawerLayout

1滑动菜单oschina使用了android.support.v4.widget.DrawerLayout,之前没有用过这个控件,百度了下,大致了解如下: 1.1类似与LinearLayout,就是一个布局控件。 1.2使用时,其有两部分组成,...

姬鑫
2015/05/20
0
3
4.1.7 版本更新丨这有一份开源中国 APP 最新源码,请笑纳

是的,没错。 开源中国 v4.1.7 版本更新了。 程序猿们经过几个星期的紧张开发, 本次更新为大家带来了 0 项新功能。  氮素, 做了一些小调整, 资讯列表做了排序优化 你不仔细看是察...

王练
06/19
0
10
oschina androdi客户端 占用内存小的原因

@火蚁 你好 ,最近一直在学习oschina android客户端,在此感谢开源中国能提供这个项目供我们新手学习。 按照oschina 写了一个项目,发现启动之后, 自己的项目“运行中”的内存达到了70M左右...

heichong
2015/11/23
561
2
DIY osc android 客户端 之 方法论

又是一个不眠夜,今天8.30还要上班,反正睡不着,就开始填下这个大坑吧.... 一开始,把oschina 下载下来一看,就这点包,还以为,是个非常简单的客户端,然后打开某个包,在打开某个类,我错了....作者...

打杂程序猿
2012/12/03
0
2
Android 进阶学习笔记整理

一.android系统架构图及各层介绍 1. 应用层:应用是用java语言编写的运行在虚拟机上的程序,比如通讯录,日历,电话,短信,浏览器等。 2. 应用框架层:这一层是编写Google发布的核心应用时所...

FunCode
07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular指令监听ng-repeat渲染完成后执行自定义事件方法

今天工作中遇到需要用到ng-repeat遍历渲染完后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己创建自定义指令。 在ng-repeat模板实例内部会暴露出一些特殊属...

孟飞阳
44分钟前
1
0
URLEncoder和URLDecoder

public static void main(String[] args) { String str1 = "https://test1-life.pingan.com/ilifecore/productMall/loading.html?productId=8000000241&channelCode=XCX00001&productCode=00......

鬼才王
53分钟前
2
0
对象及变量的并发访问-第一篇

方法内部的变量为线程安全变量 “非线程安全”问题存在于“共享变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的。 package chaprer3;/**...

简心
54分钟前
1
0
程序媛眼中的程序猿原来是这样子的!

一直都想写一篇关于描述程序员的文章,但是一直没能开头,一来因为文笔不好,更主要的原因是貌似对程序员既熟悉又不熟悉,很怕写出来的是以偏概全,给大家造成对程序员的既定印象,不过,管他...

Java小铺
今天
1
0
bean标签

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 bean标签 bean标签中的init-method属性,该属性...

凯哥学堂
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部