Fragment 使用add 和 hide 生命周期

来源:互联网 发布:ubuntu vim readonly 编辑:程序博客网 时间:2024/06/02 18:14

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

//先addFragmentTransaction 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();//在hideFragmentTransaction transaction = getFragmentManager().beginTransaction();transaction.hide(webFragment);transaction.hide(videoFragment);transaction.hide(sdFragment);transaction.commit();//在显示其中的一个FragmentFragmentTransaction transaction = getFragmentManager().beginTransaction();transaction.show(videoFragment);transaction.commit();

其生命周期的显示如下:

I/Fragment_A(18015): onAttachI/Fragment_A(18015): onCreateI/Fragment_A(18015): onCreateViewI/Fragment_A(18015): onActivityCreatedI/Fragment_A(18015): onAttachI/Fragment_A(18015): onCreateI/Fragment_A(18015): onCreateViewI/Fragment_A(18015): onActivityCreatedI/Fragment_A(18015): onHiddenChanged : trueI/Fragment_A(18015): onHiddenChanged : trueI/Fragment_A(18015): onHiddenChanged : falseI/Fragment_A(18015): onStartI/Fragment_A(18015): onStartI/Fragment_A(18015): onResume : isHiden  =falseI/Fragment_A(18015): onResume : isHiden  =true

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


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

I/Fragment_A(27457): onAttachI/Fragment_A(27457): onCreateI/Fragment_A(27457): onCreateViewI/Fragment_A(27457): onActivityCreatedI/Fragment_A(27457): onAttachI/Fragment_A(27457): onCreateI/Fragment_A(27457): onCreateViewI/Fragment_A(27457): onActivityCreatedI/Fragment_A(27457): onStartI/Fragment_A(27457): onStartI/Fragment_A(27457): onResume : isHiden  =falseI/Fragment_A(27457): onResume : isHiden  =false

也就是不会调用 onHiddenChanged


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

I/Fragment_A(27457): onHiddenChanged : trueI/Fragment_A(27457): onHiddenChanged : falseI/Fragment_A(27457): onHiddenChanged : trueI/Fragment_A(27457): onHiddenChanged : false

4.其销毁过程

I/Fragment_A(27457): onPauseI/Fragment_A(27457): onPauseI/Fragment_A(27457): onStopI/Fragment_A(27457): onStop I/Fragment_A(27457): onDestroyViewI/Fragment_A(27457): onDestroyI/Fragment_A(27457): onDetachI/Fragment_A(27457): onDestroyViewI/Fragment_A(27457): onDestroyI/Fragment_A(27457): onDetach

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

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










0 0
原创粉丝点击