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

在客户端源码中,我们可以看到大量的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的时候都向服务器请求数据“。

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

转载于:https://my.oschina.net/jixin/blog/536337

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值