Files
daikuan/basicLib/src/main/java/com/azhon/basic/lifecycle/BaseViewModel.java
2026-03-21 11:02:14 +08:00

70 lines
1.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.azhon.basic.lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModel;
import com.azhon.basic.bean.DialogBean;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
/**
* 项目名: TODO-MVVM
* 包名 com.azhon.basic.lifecycle
* 文件名: BaseViewModel
* 创建时间: 2019-03-27 on 10:44
* 描述: TODO ViewModel基类管理rxJava发出的请求ViewModel销毁同时也取消请求
*
* @author
*/
public abstract class BaseViewModel extends ViewModel {
/**
* 管理RxJava请求
*/
private CompositeDisposable compositeDisposable;
/**
* 用来通知 ActivityFragment 是否显示等待Dialog
*/
protected DialogLiveData<DialogBean> showDialog = new DialogLiveData<>();
/**
* 当ViewModel层出现错误需要通知到ActivityFragment
*/
protected MutableLiveData<Object> error = new MutableLiveData<>();
/**
* 添加 rxJava 发出的请求
*/
protected void addDisposable(Disposable disposable) {
if (compositeDisposable == null || compositeDisposable.isDisposed()) {
compositeDisposable = new CompositeDisposable();
}
compositeDisposable.add(disposable);
}
public void getShowDialog(LifecycleOwner owner, Observer<DialogBean> observer) {
showDialog.observe(owner, observer);
}
public void getError(LifecycleOwner owner, Observer<Object> observer) {
error.observe(owner, observer);
}
/**
* ViewModel销毁同时也取消请求
*/
@Override
protected void onCleared() {
super.onCleared();
if (compositeDisposable != null) {
compositeDisposable.dispose();
compositeDisposable = null;
}
showDialog = null;
error = null;
}
}