深入理解安卓MVVM架构原理
1. 简介
- LifeCycle
- 界面生命周期感知
- DataBinding
- 数据和UI双向绑定
- ViewModel
- 业务逻辑
- LiveData
- 可观察数据项
- MVVM项目框架搭建
- 通用性的快速开发框架
- 可应用各项目中
## 2. Lifecycle
2.1 功能使用
- Lifecycle类说明、作用和意义
- 监听Activity的生命周期变化,LifecycleEventObserver
- 使用@OnLifecycleEvent监听特定生命周期(反射)
- 使用APT实现3(回调)
- 最佳应用方式
2.2 源码分析
- Activity如何监听生命周期变化的
- @OnLifecycleEvent注解是如何使用的? 反射调用的过程
- 使用APT时,回调方法的过程
- 匿名内部类作为LifecycleObserver时,有什么特殊?
2. Databinding
2.1 功能使用
- 字段单向数据绑定
- 字段双向数据绑定
- 界面事件绑定
- onclick
- onLongClick
- onItemClick
- onCheckedChanged
- onItemChangedChanged
- 绑定内容表达式支持
- ==、>、<、>=、<=、?:、!= 、??、&&、||、!、&、|、~、instanceof、<<、>>、>>>、() + - * /
- 导入其他的类,类别名
- 嵌套绑定问题
- include其他布局文件
- 绑定的数据共享
- 自定义BindingAdapter的方式
- Glide自定义BindingAdapter实现
- 在xml中直接给ImageView设置显示图片
- 图片可以是网络图片http、本地文件地址、drawable资源、assets资源等
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
app:binding_src="@{viewmodel.image}"/>
- RecyclerView通用Adapter绑定实现
- 不再需要写Adapter、Holder类
<RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:itemBinding="@{viewmodel.itemBinding}"
/>
2.2 源码分析
- 说说双向数据绑定的实现原理?
- 如何自定义BindingAdapter?
- 自定义的BindingAapter是如何调用的?
- databinding对原始的xml布局文件做了哪些修改?
- 编译后的xml和原始xml有什么区别?区别的内容有什么作用?
- Databinding使用APT生成了哪些代码?
- Databinding和ViewBinding的区别?
3. ViewModel
3.1 ViewModel的使用
- 每个Acitivty或Fragment都配一个自己的ViewModel,Viewmodel中处理这个Activity的业务逻辑
- MainActivity ---> MainViewModel
- LoginActivity ---> LoginViewModel
- ViewModel对象的创建
- 直接new对象,不推荐,无法复用,无法自动清理
- 用ViewModelProvider来创建
LoginViewModel vm = ViewModelProvider(this).get(LoginViewModel.class);
implementation 'androidx.activity:activity-ktx:1.5.1'
val vm = viewmodels<LoginViewModel>()
- ViewModel的生命周期
- 同Activity,onDestroy时执行onClear清理ViewModel
3. 2 ViewModel源码
- 有几种创建ViewModel的方式?
- 如何在应用中所有的ViewModel中都传入某个全局对象,如Http请求类的单例。而不需要在创建ViewModel时显示传递此参数
- 如何自定义创建ViewModel的Fragtory?安卓有哪些现成的Fragtory?有什么作用?
- ViewModel如何在多个Activity中共享?
- ViewModel如何实现在Activity销毁时自动清理的?
标签: