欢迎光临散文网 会员登陆 & 注册

深入理解安卓MVVM架构原理

2023-02-21 16:06 作者:码码乎乎  | 我要投稿

深入理解安卓MVVM架构原理

1. 简介

  1. LifeCycle
  2. 界面生命周期感知
  3. DataBinding
  4. 数据和UI双向绑定
  5. ViewModel
  6. 业务逻辑
  7. LiveData
  8. 可观察数据项
  9. MVVM项目框架搭建
  10. 通用性的快速开发框架
  11. 可应用各项目中


## 2. Lifecycle

2.1 功能使用

  1. Lifecycle类说明、作用和意义
  2. 监听Activity的生命周期变化,LifecycleEventObserver
  3. 使用@OnLifecycleEvent监听特定生命周期(反射)
  4. 使用APT实现3(回调)
  5. 最佳应用方式

2.2 源码分析

  1. Activity如何监听生命周期变化的
  2. @OnLifecycleEvent注解是如何使用的? 反射调用的过程
  3. 使用APT时,回调方法的过程
  4. 匿名内部类作为LifecycleObserver时,有什么特殊?

2. Databinding

2.1 功能使用

  1. 字段单向数据绑定
  2. 字段双向数据绑定

  3. 界面事件绑定
  4. onclick
  5. onLongClick
  6. onItemClick
  7. onCheckedChanged
  8. onItemChangedChanged
  9. 绑定内容表达式支持
  10. ==、>、<、>=、<=、?:、!= 、??、&&、||、!、&、|、~、instanceof、<<、>>、>>>、() + - * /
  11. 导入其他的类,类别名
  12. 嵌套绑定问题
  13. include其他布局文件
  14. 绑定的数据共享
  15. 自定义BindingAdapter的方式
  16. Glide自定义BindingAdapter实现
  17. 在xml中直接给ImageView设置显示图片
  18. 图片可以是网络图片http、本地文件地址、drawable资源、assets资源等
<ImageView
 android:layout_width="100dp"
 android:layout_height="100dp"
 app:binding_src="@{viewmodel.image}"/>
  1. RecyclerView通用Adapter绑定实现
  2. 不再需要写Adapter、Holder类
<RecyclerView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  app:itemBinding="@{viewmodel.itemBinding}"
/>

2.2 源码分析

  1. 说说双向数据绑定的实现原理?
  2. 如何自定义BindingAdapter?
  3. 自定义的BindingAapter是如何调用的?
  4. databinding对原始的xml布局文件做了哪些修改?
  5. 编译后的xml和原始xml有什么区别?区别的内容有什么作用?
  6. Databinding使用APT生成了哪些代码?
  7. Databinding和ViewBinding的区别?

3. ViewModel

3.1 ViewModel的使用

  1. 每个Acitivty或Fragment都配一个自己的ViewModel,Viewmodel中处理这个Activity的业务逻辑
  2. MainActivity ---> MainViewModel
  3. LoginActivity ---> LoginViewModel
  4. ViewModel对象的创建
  • 直接new对象,不推荐,无法复用,无法自动清理
  • 用ViewModelProvider来创建
LoginViewModel vm = ViewModelProvider(this).get(LoginViewModel.class);
  • 用kotlin扩展函数来创建
implementation 'androidx.activity:activity-ktx:1.5.1'
val vm = viewmodels<LoginViewModel>()
  1. ViewModel的生命周期
  2. 同Activity,onDestroy时执行onClear清理ViewModel

3. 2 ViewModel源码

  1. 有几种创建ViewModel的方式?
  2. 如何在应用中所有的ViewModel中都传入某个全局对象,如Http请求类的单例。而不需要在创建ViewModel时显示传递此参数
  3. 如何自定义创建ViewModel的Fragtory?安卓有哪些现成的Fragtory?有什么作用?
  4. ViewModel如何在多个Activity中共享?
  5. ViewModel如何实现在Activity销毁时自动清理的?


深入理解安卓MVVM架构原理的评论 (共 条)

分享到微博请遵守国家法律