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 使用的生命周期后, 就可以准确的利用生命周期对业务逻辑进行处理了...










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值