-
Model层
-
Bean类:网络请求返回封装的各种Bean类
-
Repository类:用于请求并存储数据
-
BaseRepository:
封装基础的网络请求处理框架, 封装了网络请求的通用逻辑, 包括错误处理、 超时处理和数据解析
-
XxxRepository:
1.继承自上面
2.提供对应的ViewModel类所需的网络请求方法(具体实现)
-
-
-
-
View层
-
BaseActivity(Fragment):
1.继承自View基类
2.初始化布局,提供设置布局id的方法...
-
BaseDataBindingActivity(Fragment)<DB:ViewDataBinding>:
1.继承自上面
2.通过反射获取到其子类的DataBinding实例对象,并抽为成员变量方便调用
-
BaseMvvmActivity(Fragment)<DB:ViewDataBinding,VM:ViewModel>:
1.继承自上面
2.再添加了一个ViewModel,通过反射获取子类的ViewModel实例并将其抽为成员变量方便调用
-
XxxActivity(Fragment):继承自上面
-
-
-
-
-
ViewModel层:网络请求回来的数据封装为liveData提取为成员变量缓存在这一层,View层可通过对应ViewModel层的实例来调用对应的liveData成员方法观察数据的变化,故无需通过回调来获取成功数据
-
BaseViewModel:
1.继承自ViewModel类
2.抽象出运行在主线程的方法launchUI(errorBlock: (Int?, String?) -> Unit, responseBlock: suspend () -> Unit) 参数为运行异常时回调的函数和要运行在主线程的函数。在函数内部启动协程切换到主线程运行responseBlock
3.抽象出带有返回值的运行在子线程的方法,传入运行异常回调函数,运行成功回调函数,和需要运行在子线程的函数
-
XxxViewModel:
1.继承自上面
2.将对应repository类的实例抽为成员变量
3.提供View类所需的网络请求方法(不是具体实现),通过repository类实例调用对网络请求方法(一般是提供获取各部分网络数据的方法,供View类调用,View类调用时传入查询参数、错误回调函数,成功回调函数(可选,因为一般数据返回到此层会将其封装为可观察的liveData,无需通过回调获取))
-
-
Android MVVM架构在应用中的一种设计实现
最新推荐文章于 2024-08-27 21:53:34 发布