Android Jetpack 组件之LiveData、ViewModel、Navigation学习简记

这次主要学习了Navigation组件,附带学习其他2个组件,对作用和使用步骤简记如下

一、LiveData

使用到类:MutableLiveData
可观察的数据源,使用步骤

  1. 有MutableLiveData liveData;
  2. 创建Observer obs,在方法onChanged(T t)中把t中数据设置到UI;
  3. 用liveData.observe(owner,obs)激活obs并使它感知生命周期。owner 是实现感知生命周期类LifecycleOwner的子类,新的SDK中AppCompatActivity和Fragment已实现。

二、ViewModel

可看作保存UI数据的盒子,使用步骤

  1. 继承ViewModel MyViewModel;
  2. ViewModelProviders.of(activity/fragment).get(MyViewModel.class)得到UI持有的ViewModel句柄vModel;
  3. 通过句柄vModel操作ViewModel。

三、Navigation

导航控件,开启Android studio 可视化编辑非常明朗展示界面跳转关系

  1. 非常适用场景,单Activity多纵向父子导航关系Fragment;
  2. 一般适用场景,多Activity都是纵向父子导航关系;
  3. 不太适用场景,横向兄弟同级Activity或Fragment;

使用步骤:

  1. 绘制导航graph xml文件,添加action和跳转目的地,添加携带参数;
  2. 使用NavigationUI.setupWithNavController()绑定具有导航功能的控件;
  3. 使用Navigation.findNavController(view)NavHostFragment.findNavController(fragment)得到NavController mController;
  4. mController.navigate(resId,args)导航到目标。

四、总结

这三个组件学习与使用容易,前2个组件适用普遍场景,相较于常规模式编程在设计结构和效率方面都有显著助力。Navigation适用场景目前有前文所述不足,需要根据场景设计对应解决方案,其简化Fragment跳转切换简化跳转Intent目的很有吸引力。

五、DEMO

常见主页底部导航卡多fragment同级横向切换方案:
思路1:多个NavHost多个graph xml文件方案
https://github.com/LuoYang2412/MyAndroidxStudy.git

思路2:相信更好的解决方案一定存在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Jetpack是Google提供的一套用于加速Android应用开发的工具包,其中包括了许多架构组件,其中之一就是ViewModelViewModel是一种设计模式,用于保存和管理与UI相关的数据。在传统的Android开发中,当屏幕旋转或者因为其他原因导致Activity或Fragment重建时,之前保存的临时数据就会丢失。而ViewModel的出现解决了这个问题。 ViewModel的主要作用是将数据与UI组件分离。它的工作方式是创建一个ViewModel类,并在其中保存需要与UI组件交互的数据。这样,当屏幕旋转或重建时,ViewModel实例不会销毁,数据也会得到保留。然后,在Activity或Fragment中,通过获取ViewModel实例,可以轻松地访问这些数据。 使用ViewModel的好处有很多。首先,它可以避免内存泄漏,因为ViewModel的生命周期与Activity或Fragment无关。其次,它可以节省资源,因为当Activity或Fragment销毁时,ViewModel实例可以被系统缓存起来,下次再创建时可以直接返回该实例。另外,由于ViewModel保存了与UI相关的数据,可以减少因为屏幕旋转导致的数据重复加载的问题。 在使用ViewModel时,你可以选择使用Android Jetpack中的其他架构组件来进一步提高开发效率,比如通过LiveData实现数据的观察和通知,或者通过DataBinding来实现UI与数据的自动绑定。 总之,ViewModelAndroid Jetpack中非常重要的一个架构组件,它的出现实现了数据与UI的解耦,提高了开发效率,并且解决了数据丢失的问题。希望通过这篇文档的详解,你对ViewModel有了更深入的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值