美文网首页
setMaxLifecycle 的使用方法

setMaxLifecycle 的使用方法

作者: 菜鸟何时起飞 | 来源:发表于2021-09-20 12:02 被阅读0次

    demo地址:
    https://github.com/newPersonKing/SetMaxLifecycle_TestFragmentState.git

    声明周期执行的几种流程
    1 设置为STARTED

        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.STARTED)
            beginTransaction.commit()
    

    1.1 fragment 的声明周期只能执行到 OnStart
    1.2 切换到后台 直接执行 onStop
    1.3 再切换到前台, 直接执行onStart

    2 设置为CREATED

        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.CREATED)
            beginTransaction.commit()
    

    2.1 声明周期只走到onCreate
    2.2 切换到后台 不执行方法
    2.3 切换到 前台 不执行方法
    3 设置为 RESUMED

      val beginTransaction = supportFragmentManager.beginTransaction()
          beginTransaction.add(R.id.fl_main, fragment)
          beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.RESUMED)
          beginTransaction.commit()
    
    3.1 声明周期流程跟正常的流程一致
    

    4 STARTED -> CREATED

        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.STARTED)
            beginTransaction.commit()
    
        btn_main_frg_1.setOnClickListener {
                val beginTransaction = supportFragmentManager.beginTransaction()
                beginTransaction.setMaxLifecycle(fragment, androidx.lifecycle.Lifecycle.State.CREATED)
                beginTransaction.commitNow()
            }
    

    4.1 立即执行 onStop -> onDestroyView
    4.2 之后行为跟直接设置CREATED一致

    5 RESUMED -> CREATED

        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.RESUMED)
            beginTransaction.commit()
    
        btn_main_frg_1.setOnClickListener {
                val beginTransaction = supportFragmentManager.beginTransaction()
                beginTransaction.setMaxLifecycle(fragment, androidx.lifecycle.Lifecycle.State.CREATED)
                beginTransaction.commitNow()
            }
    

    5.1 立即执行 onPause->onStop -> onDestroyView
    5.2 之后行为跟直接设置CREATED一致

    6 CREATED -> STARTED

        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.CREATED)
            beginTransaction.commit()
    
        btn_main_frg_1.setOnClickListener {
                val beginTransaction = supportFragmentManager.beginTransaction()
                beginTransaction.setMaxLifecycle(fragment, androidx.lifecycle.Lifecycle.State.STARTED)
                beginTransaction.commitNow()
            }
    

    6.1 立即执行 onCreateView->onActivityCreated -> onStart
    6.2 之后行为跟直接设置STARTED一致

     7 CREATED -> RESUMED
    
        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.CREATED)
            beginTransaction.commit()
    
        btn_main_frg_1.setOnClickListener {
                val beginTransaction = supportFragmentManager.beginTransaction()
                beginTransaction.setMaxLifecycle(fragment, androidx.lifecycle.Lifecycle.State.RESUMED)
                beginTransaction.commitNow()
            }
    

    7.1 立即执行 onCreateView->onActivityCreated -> onStart -> onResume
    7.2 之后行为跟直接设置RESUMED一致

     8 STARTED -> RESUMED
    
        val beginTransaction = supportFragmentManager.beginTransaction()
            beginTransaction.add(R.id.fl_main, fragment)
            beginTransaction.setMaxLifecycle(fragment,Lifecycle.State.STARTED)
            beginTransaction.commit()
    
        btn_main_frg_1.setOnClickListener {
                val beginTransaction = supportFragmentManager.beginTransaction()
                beginTransaction.setMaxLifecycle(fragment, androidx.lifecycle.Lifecycle.State.RESUMED)
                beginTransaction.commitNow()
            }
    

    8.1 立即执行 onResume
    8.2 之后行为跟直接设置RESUMED一致

    相关文章

      网友评论

          本文标题:setMaxLifecycle 的使用方法

          本文链接:https://www.haomeiwen.com/subject/olimgltx.html