MVVM框架+RXjava封装使用

本文介绍了如何在Android应用中结合MVVM框架和RXJava进行组件封装。详细讨论了IModel、BaseModel、IViewModel、BaseViewModel、IView以及BaseActivity的角色和实现,特别是RXJava在处理数据订阅和防止内存泄漏方面的应用。还提到了MVVM模式的优势,如解耦性,并提及了基于Lifecycle的livedata和databinding框架在MVVM架构中的作用。
摘要由CSDN通过智能技术生成

   

目录

IModel的封装

BaseModel

IViewModel

 BaseViewModel

 IView

BaseActivity

BaseFragment


      总结来说rxjava中包含观察者和被观察者,这是将接口IModel一个转化实现在BaseModel中,而IVewModel是通过对生命周期的运用实现早BaseViewModel中有对内存泄露的一个操作,initModel中的做了一个反射获取数据,对其观察者的一个封装,比如说如果当你运用接口可以对你当前的数据进行一个监听如果出现问题会提出警告。

      mvvm是model,view,viewmodel,而model是负责获取数据,view负责展示,至于viewmodel是负责业务逻辑,mvvm实在mvp的基础上建立的一套解耦性更强的框架,view和viewmodel的对象持有关系的是view持有viewmodel的对象viewmodel不能持有view层的对象,因为viewmodel的生命周期要长于activity,mvvm基于databinding,livedata,lifecycle,viewmodel等框架进行搭建的,lifecycle是基于注解器以及观察者模式进行生命周期绑定的框架可以用来关联activity或者fragment声明周期方法从而达到一个自动调用生命周期方法关联的方法的效果,livedata是基于lifecycle框架实现的基于观察者的数据驱动框架,在mvvm中可以用来vm层与view层通信,databinding框架是用来实现数据ui的双向绑定

IModel的封装

public interface IModel {
    RequestBody createBody(HashMap<String,Object> map);
    Observable<BaseEntity> changeFunc(Observable< ? extends BaseEntity> observable);

} 

BaseModel

public abstract class BaseModel implements IModel{
    @Override
    public RequestBody createBody(HashMap<String, Object> map) {
        return RequestBody.create(MediaType.parse("application/json"),new Gson().toJson(map));

    }

    @Override
    public Observable<BaseEntity> changeFunc(Observable<? extends BaseEntity> observable) {
        return observable.map(new ChangeFunction<>());
    }
}


IViewModel

 
public interface IViewModel extends LifecycleObserver {

    @OnLifecycleEvent(value = Lifecycle.Event.ON_CREATE)
    void onCreate();
    @OnLifecycleEvent(value = Lifecycle.Event.ON_DESTROY)
    void onDestroy();

}

 BaseViewModel

public abstract class BaseViewModel<M extends BaseModel> extends ViewModel implements IViewModel, O
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值