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:相信更好的解决方案一定存在

你可能感兴趣的:(Android)