|
@@ -1,9 +1,14 @@
|
|
|
package com.miekir.mvp.presenter;
|
|
package com.miekir.mvp.presenter;
|
|
|
|
|
|
|
|
-import androidx.lifecycle.ViewModel;
|
|
|
|
|
|
|
+import android.app.Application;
|
|
|
|
|
+
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
|
|
|
|
|
import com.miekir.mvp.model.BaseModel;
|
|
import com.miekir.mvp.model.BaseModel;
|
|
|
import com.miekir.mvp.view.IView;
|
|
import com.miekir.mvp.view.IView;
|
|
|
|
|
+import com.rxjava.rxlife.ScopeViewModel;
|
|
|
|
|
+
|
|
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
|
|
|
|
|
import java.lang.ref.WeakReference;
|
|
import java.lang.ref.WeakReference;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -11,7 +16,6 @@ import java.util.Optional;
|
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
|
import java.util.function.Consumer;
|
|
import java.util.function.Consumer;
|
|
|
|
|
|
|
|
-import io.reactivex.disposables.CompositeDisposable;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Copyright (C), 2019-2020, Miekir
|
|
* Copyright (C), 2019-2020, Miekir
|
|
@@ -24,16 +28,8 @@ import io.reactivex.disposables.CompositeDisposable;
|
|
|
* View <-(weak) Presenter <-(weak) Model <-(weak) Repository
|
|
* View <-(weak) Presenter <-(weak) Model <-(weak) Repository
|
|
|
|
|
|
|
|
*/
|
|
*/
|
|
|
-public abstract class BasePresenter<V extends IView> extends ViewModel {
|
|
|
|
|
|
|
+public abstract class BasePresenter<V extends IView> extends ScopeViewModel {
|
|
|
private WeakReference<V> mViewReference;
|
|
private WeakReference<V> mViewReference;
|
|
|
- /**
|
|
|
|
|
- * 有加载框的可取消任务,完成之后,会自动移除
|
|
|
|
|
- */
|
|
|
|
|
- protected CompositeDisposable mProgressDisposableList = new CompositeDisposable();
|
|
|
|
|
- /**
|
|
|
|
|
- * 后台没有加载框的可取消任务,完成之后,会自动移除
|
|
|
|
|
- */
|
|
|
|
|
- protected CompositeDisposable mBackDisposableList = new CompositeDisposable();
|
|
|
|
|
/**
|
|
/**
|
|
|
* 有加载框的可取消任务, for model
|
|
* 有加载框的可取消任务, for model
|
|
|
*/
|
|
*/
|
|
@@ -43,7 +39,8 @@ public abstract class BasePresenter<V extends IView> extends ViewModel {
|
|
|
*/
|
|
*/
|
|
|
private List<BaseModel> mBackModelList = new CopyOnWriteArrayList<>();
|
|
private List<BaseModel> mBackModelList = new CopyOnWriteArrayList<>();
|
|
|
|
|
|
|
|
- public BasePresenter() {
|
|
|
|
|
|
|
+ public BasePresenter(@NonNull @NotNull Application application) {
|
|
|
|
|
+ super(application);
|
|
|
PresenterHelper.initModelList(mProgressModelList, mBackModelList, this);
|
|
PresenterHelper.initModelList(mProgressModelList, mBackModelList, this);
|
|
|
onInit();
|
|
onInit();
|
|
|
}
|
|
}
|
|
@@ -80,7 +77,6 @@ public abstract class BasePresenter<V extends IView> extends ViewModel {
|
|
|
* 没有加载框的任务被取消
|
|
* 没有加载框的任务被取消
|
|
|
*/
|
|
*/
|
|
|
private void onBackTaskCancel() {
|
|
private void onBackTaskCancel() {
|
|
|
- mBackDisposableList.dispose();
|
|
|
|
|
for (BaseModel model : mBackModelList) {
|
|
for (BaseModel model : mBackModelList) {
|
|
|
model.onProgressTaskCancel();
|
|
model.onProgressTaskCancel();
|
|
|
}
|
|
}
|
|
@@ -91,8 +87,7 @@ public abstract class BasePresenter<V extends IView> extends ViewModel {
|
|
|
* 界面还存在,可见任务被取消,响应加载框的取消
|
|
* 界面还存在,可见任务被取消,响应加载框的取消
|
|
|
*/
|
|
*/
|
|
|
public void onProgressTaskCancel() {
|
|
public void onProgressTaskCancel() {
|
|
|
- mProgressDisposableList.dispose();
|
|
|
|
|
- mProgressDisposableList = new CompositeDisposable();
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
for (BaseModel model : mProgressModelList) {
|
|
for (BaseModel model : mProgressModelList) {
|
|
|
model.onProgressTaskCancel();
|
|
model.onProgressTaskCancel();
|