|
|
@@ -1,21 +1,18 @@
|
|
|
package com.miekir.mvp.presenter;
|
|
|
|
|
|
-import android.app.Application;
|
|
|
-
|
|
|
-import androidx.annotation.NonNull;
|
|
|
-
|
|
|
+import com.blankj.utilcode.util.Utils;
|
|
|
import com.miekir.mvp.model.BaseModel;
|
|
|
import com.miekir.mvp.view.IView;
|
|
|
import com.rxjava.rxlife.ScopeViewModel;
|
|
|
|
|
|
-import org.jetbrains.annotations.NotNull;
|
|
|
-
|
|
|
import java.lang.ref.WeakReference;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
|
import java.util.function.Consumer;
|
|
|
|
|
|
+import io.reactivex.disposables.CompositeDisposable;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* Copyright (C), 2019-2020, Miekir
|
|
|
@@ -30,6 +27,14 @@ import java.util.function.Consumer;
|
|
|
*/
|
|
|
public abstract class BasePresenter<V extends IView> extends ScopeViewModel {
|
|
|
private WeakReference<V> mViewReference;
|
|
|
+ /**
|
|
|
+ * 有加载框的可取消任务,完成之后,会自动移除
|
|
|
+ */
|
|
|
+ protected CompositeDisposable mProgressDisposableList = new CompositeDisposable();
|
|
|
+ /**
|
|
|
+ * 后台没有加载框的可取消任务,完成之后,会自动移除
|
|
|
+ */
|
|
|
+ protected CompositeDisposable mBackDisposableList = new CompositeDisposable();
|
|
|
/**
|
|
|
* 有加载框的可取消任务, for model
|
|
|
*/
|
|
|
@@ -39,8 +44,8 @@ public abstract class BasePresenter<V extends IView> extends ScopeViewModel {
|
|
|
*/
|
|
|
private List<BaseModel> mBackModelList = new CopyOnWriteArrayList<>();
|
|
|
|
|
|
- public BasePresenter(@NonNull @NotNull Application application) {
|
|
|
- super(application);
|
|
|
+ public BasePresenter() {
|
|
|
+ super(Utils.getApp());
|
|
|
PresenterHelper.initModelList(mProgressModelList, mBackModelList, this);
|
|
|
onInit();
|
|
|
}
|
|
|
@@ -50,6 +55,7 @@ public abstract class BasePresenter<V extends IView> extends ScopeViewModel {
|
|
|
* @param consumer 要执行的操作
|
|
|
*/
|
|
|
public void post(Consumer<? super V> consumer) {
|
|
|
+
|
|
|
Optional.ofNullable(getView()).ifPresent(consumer);
|
|
|
}
|
|
|
|
|
|
@@ -77,6 +83,7 @@ public abstract class BasePresenter<V extends IView> extends ScopeViewModel {
|
|
|
* 没有加载框的任务被取消
|
|
|
*/
|
|
|
private void onBackTaskCancel() {
|
|
|
+ mBackDisposableList.dispose();
|
|
|
for (BaseModel model : mBackModelList) {
|
|
|
model.onProgressTaskCancel();
|
|
|
}
|
|
|
@@ -87,7 +94,8 @@ public abstract class BasePresenter<V extends IView> extends ScopeViewModel {
|
|
|
* 界面还存在,可见任务被取消,响应加载框的取消
|
|
|
*/
|
|
|
public void onProgressTaskCancel() {
|
|
|
-
|
|
|
+ mProgressDisposableList.dispose();
|
|
|
+ mProgressDisposableList = new CompositeDisposable();
|
|
|
|
|
|
for (BaseModel model : mProgressModelList) {
|
|
|
model.onProgressTaskCancel();
|