Fragment 使用add 和 hide 生命周期

1.先add两个Fragment ,然后立马hide这两个Fragment ,再然后显示其中一个Fragment

//先add
FragmentTransaction beginTransaction = getFragmentManager().beginTransaction();
videoFragment = new NewSDAndCloudVideoFragment(NewSDAndCloudVideoFragment.SRC_FROM_PLATFORM);
sdFragment = new NewSDAndCloudVideoFragment(NewSDAndCloudVideoFragment.SRC_FROM_SD);
beginTransaction.add(R.id.new_content_fl,videoFragment);
beginTransaction.add(R.id.new_content_fl,sdFragment);
beginTransaction.commit();

//在hide
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.hide(webFragment);
transaction.hide(videoFragment);
transaction.hide(sdFragment);
transaction.commit();

//在显示其中的一个Fragment
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.show(videoFragment);
transaction.commit();

其生命周期的显示如下:

I/Fragment_A(18015): onAttach
I/Fragment_A(18015): onCreate
I/Fragment_A(18015): onCreateView
I/Fragment_A(18015): onActivityCreated

I/Fragment_A(18015): onAttach
I/Fragment_A(18015): onCreate
I/Fragment_A(18015): onCreateView
I/Fragment_A(18015): onActivityCreated

I/Fragment_A(18015): onHiddenChanged : true
I/Fragment_A(18015): onHiddenChanged : true
I/Fragment_A(18015): onHiddenChanged : false

I/Fragment_A(18015): onStart
I/Fragment_A(18015): onStart
I/Fragment_A(18015): onResume : isHiden  =false
I/Fragment_A(18015): onResume : isHiden  =true

ps: 其创建过程 是一个Fragment 从 onAttach 到 onActivityCreated执行完成之后,在执行另为的一个, 然后交替执行 onStart 和 onResume

2. 如果只add两个Fragment 其生命周期如下

I/Fragment_A(27457): onAttach
I/Fragment_A(27457): onCreate
I/Fragment_A(27457): onCreateView
I/Fragment_A(27457): onActivityCreated
I/Fragment_A(27457): onAttach
I/Fragment_A(27457): onCreate
I/Fragment_A(27457): onCreateView
I/Fragment_A(27457): onActivityCreated
I/Fragment_A(27457): onStart
I/Fragment_A(27457): onStart
I/Fragment_A(27457): onResume : isHiden  =false
I/Fragment_A(27457): onResume : isHiden  =false

也就是不会调用 onHiddenChanged

3.如果添加完成然后再两个Fragment交替show 和 hide ,那么只会调用 onHiddenChanged, 其中返回其是否显示的状态

I/Fragment_A(27457): onHiddenChanged : true
I/Fragment_A(27457): onHiddenChanged : false
I/Fragment_A(27457): onHiddenChanged : true
I/Fragment_A(27457): onHiddenChanged : false

4.其销毁过程

I/Fragment_A(27457): onPause
I/Fragment_A(27457): onPause
I/Fragment_A(27457): onStop
I/Fragment_A(27457): onStop
 
I/Fragment_A(27457): onDestroyView
I/Fragment_A(27457): onDestroy
I/Fragment_A(27457): onDetach

I/Fragment_A(27457): onDestroyView
I/Fragment_A(27457): onDestroy
I/Fragment_A(27457): onDetach

ps: 在销毁过程中, 交替指向 onPasue 和 onStop , 然后 一个一个执行 onDestroyView 到 onDetach 过程

了解Fragment 的add / show / hide 使用的生命周期后, 就可以准确的利用生命周期对业务逻辑进行处理了...

时间: 2024-08-24 11:21:11

Fragment 使用add 和 hide 生命周期的相关文章

为Fragment增加入新的生命周期,并实现管理

1.  背景知识 ViewPager+Fragment实现滑动标签页时,默认情况下,Fragment的生命周期是由FragmentPagerAdapter和Activity共同管理的.(1) Activity维持在onResume状态时,Fragment的生命周期主要由FragmentPagerAdapter进行管理.进行了预加载的Fragment会处于onResume状态(即使没有变成可操作),预加载多少个Fragment,可以通过    ViewPager::setOffscreenPage

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

Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的.在此不表: Fragment从出现到广泛运用也有一段时间了.其标准生命周期也仅比Activity多出一些流程,如onCreateView(); Activity和Fragment在实际编码中必然是结合出现的,表现为Activity作为容器,装载有一个或若干个Fragment: 装载多个Fragment时,常常使用TabHost和Viewpager作为载体: 在实际编码中发现,Activity和

Fragment生命周期(转)

Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理viewhierarchy的复杂变化. 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化. 例如, 一

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

Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方式来瞧一瞧Fragment的生命周期是什么样的: 1 publicclass Fragment1 extends Fragment { 2 publicstaticfinal String TAG = "Fragment1"; 3 @Override 4 public View onCre

深刻的理解Fragment生命周期 都在做什么

Fragment用了很久了,接下来讲一下我自己对fragment的理解.部分图片内容参考官方文档. 请各种参考这篇文章:http://blog.csdn.net/wanghao200906/article/details/45561385 先上一个生命周期的图片吧 下面挨个的说一下我平时 都怎么使用 这些 回调函数的 流程: onAttach() 作用:fragment已经关联到activity, 这个是 回调函数 @Override public void onAttach(Activity

React Native 中 component 生命周期

React Native 中 component 生命周期 转自 csdn 子墨博客  http://blog.csdn.net/ElinaVampire/article/details/51813677 (非原创) React Native中的component跟Android中的activity,fragment等一样,存在生命周期,下面先给出component的生命周期图 getDefaultProps object getDefaultProps() 执行过一次后,被创建的类会有缓存,映

fragment hide/show 生命周期

Fragment的使用越来越普遍了,掌握它的生命周期以及注意事项时非常有必要的,首先 All subclasses of Fragment must include a public empty constructor. The framework will often re-instantiate a fragment class when needed, in particular during state restore, and needs to be able to find this

Android Fragment 生命周期及其API使用

Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 ) 生命周期回调说明: onAttach(Activity)当Fragment与Activity发生关联时调用.onCreateView(LayoutInflater, ViewGroup,Bundle)创建该Fragment的视图onActivityCreated(Bundle)当Activity的onCreate方法返回时调用onDestoryView()与onCrea

关于FragmentManager动态管理Fragment时Fragment生命周期的探究

Fragment是Android中的重要组件,在Android 3.0的时候添加进来. 关于Fragment的生命周期,我相信了解过的开发人员都应该把以下方法脱口而出:onAttach, onCreate, onCreateView, onViewCreated, onActivityCreated, onStart, onResume, onPause, onStop, onDestroyView, onDestroy, onDetach. 当Fragment以静态的方式,即通过在布局文件中以