Android MVVM架构在应用中的一种设计实现

  • 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,无需通过回调获取))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值