目录
总结来说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