广告也精彩
目录

前言

根据《Android Jetpack - Navigation的简单使用》的使用,我们已经知道了Navigation的使用了。

使用Navigation的Fragment生命周期和FragmentTransaction管理Fragment的存在不一样,因此这里简单记录一下。

正文

PS: 使用Navigation的Fragment切换demo参考前一篇文章《Android Jetpack - Navigation的简单使用》,这里就不多解释了。

我们启动Fragment的顺序如下:

Fragment A --> Fragment B --> Fragment C

使用Navigation

完整日志显示:

A_NavController( 4545): onCreate:
A_NavController( 4545): onCreateView:
A_NavController( 4545): onResume:
A_NavController( 4545): onClick:
B_NavController( 4545): onCreate:
B_NavController( 4545): onCreateView:
B_NavController( 4545): onResume:
A_NavController( 4545): onPause:
A_NavController( 4545): onStop:
C_NavController( 4545): onCreate:
C_NavController( 4545): onCreateView:
C_NavController( 4545): onResume:
B_NavController( 4545): onPause:
B_NavController( 4545): onStop:

点击Back退出应用的打印

Fragment C --> Fragment B --> Fragment A

日志:

B_NavController( 4545): onCreateView:
B_NavController( 4545): onResume:
C_NavController( 4545): onPause:
C_NavController( 4545): onStop:
C_NavController( 4545): onDestroy:
A_NavController( 4545): onCreateView:
A_NavController( 4545): onResume:
B_NavController( 4545): onPause:
B_NavController( 4545): onStop:
B_NavController( 4545): onDestroy:
A_NavController( 4545): onPause:
A_NavController( 4545): onStop:
A_NavController( 4545): onDestroy:

使用Navigation总结如下:

  1. Navigation管理Fragment类似栈,先进后出
  2. 切换Fragment时,比如A --> B,B执行完onResume(),A才执行onPause()
  3. 添加几次Fragment,需要按Back回退多少次才你能退出
  4. Fragment A --> B 时,A一直存在,不会走销毁流程

使用FragmentTransaction管理Fragment

添加Fragment的代码片段:

    public void LoadFragment(Fragment fm) {
        if (fm != null && fm != mCurActiveFm) {
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.media_content, fm);
            mCurActiveFm = fm;
            fragmentTransaction.commitAllowingStateLoss();
        }
    }

下面是Fragment A--> B 的打印生命周期日志(C的就省略吧)

A_Fragment( 8623): onCreate:
A_Fragment( 8623): onCreateView
A_Fragment( 8623): onResume
B_Fragment( 8623): onCreate:
A_Fragment( 8623): onPause:
A_Fragment( 8623): onDestroy:
B_Fragment( 8623): onCreateView
B_Fragment( 8623): onResume:
A_Fragment( 8623): onCreate:
B_Fragment( 8623): onPause:
B_Fragment( 8623): onDestroy:
A_Fragment( 8623): onCreateView
A_Fragment( 8623): onResume
  1. FragmentTransaction管理中只存在一个Fragment
  2. Fragment A -- > B时,Fragment A会直接销毁流程。
  3. Fragment A -- > B时 Fragment B先启动onCreate, A再执行onPause(),等B显示后就A就销毁
  4. 只需要按一次Back就退出应用

参考文章

  1. Android Jetpack - Navigation的简单使用

 历史上的今天

版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
广告也精彩

相关文章

广告也精彩

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...

网站升级中

公告

近期网站升级中,可能存在一些bug。欢迎反馈 https://www.91es.com/we.html

本站域名

本站域名 : 91es.com3xcn.com。本站邮箱 : 站长邮箱 i@oorr.cn,通知邮箱we@oorr.cn ,如有更新,请看公告 。