Переглянути джерело

不可取消的任务(有进度和无进度)

詹子聪 5 роки тому
батько
коміт
0095b7ee20

+ 1 - 1
app/src/main/java/com/miekir/newmvp/ui/home/article/presenter/SimpleArticlePresenter.java

@@ -2,7 +2,7 @@ package com.miekir.newmvp.ui.home.article.presenter;
 
 import com.miekir.common.utils.LogTool;
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.impl.LoadingObserver;
+import com.miekir.network.widget.consumer.LoadingObserver;
 import com.miekir.newmvp.ui.home.IArticleView;
 
 import io.reactivex.Observable;

+ 1 - 2
network/src/main/java/com/miekir/network/core/RetrofitHelper.java

@@ -1,11 +1,10 @@
-package com.miekir.network.core;
+package com.miekir.network;
 
 import android.content.Context;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.miekir.common.utils.ContextManager;
-import com.miekir.network.BuildConfig;
 import com.readystatesoftware.chuck.ChuckInterceptor;
 
 import java.io.IOException;

+ 9 - 0
network/src/main/java/com/miekir/network/base/BaseBean.java

@@ -0,0 +1,9 @@
+package com.miekir.network.base;
+
+/**
+ * 公共返回内容
+ * @author Miekir
+ */
+
+public class BaseBean {
+}

+ 1 - 1
network/src/main/java/com/miekir/network/core/base/BaseResponse.java

@@ -1,4 +1,4 @@
-package com.miekir.network.core.base;
+package com.miekir.network.base;
 
 /**
  * 统一返回封装

+ 0 - 9
network/src/main/java/com/miekir/network/core/base/CommonBean.java

@@ -1,9 +0,0 @@
-package com.miekir.network.core.base;
-
-/**
- * 公共返回内容
- * @author Miekir
- */
-
-public class CommonBean {
-}

+ 3 - 3
network/src/main/java/com/miekir/network/core/impl/LoadingObserver.java

@@ -1,9 +1,9 @@
-package com.miekir.network.core.impl;
+package com.miekir.network.widget.consumer;
 
 import com.miekir.mvp.presenter.BasePresenter;
 import com.miekir.network.constant.Code;
-import com.miekir.network.core.base.CommonObserver;
 import com.miekir.network.utils.ExceptionUtil;
+import com.miekir.network.widget.observe.common.StickyObserver;
 
 import io.reactivex.annotations.NonNull;
 import io.reactivex.disposables.Disposable;
@@ -16,7 +16,7 @@ import io.reactivex.disposables.Disposable;
  * 变为发送通知增加dialog显示次数
  */
 
-public abstract class LoadingObserver<T> extends CommonObserver<T> {
+public abstract class LoadingObserver<T> extends StickyObserver<T> {
     private BasePresenter<?> mPresenter;
 
     public LoadingObserver(BasePresenter<?> presenter) {

+ 7 - 6
network/src/main/java/com/miekir/network/core/impl/ProgressObserver.java

@@ -1,10 +1,10 @@
-package com.miekir.network.core.impl;
+package com.miekir.network.widget.observe;
 
 import android.content.Context;
 
 import com.miekir.network.R;
-import com.miekir.network.core.base.BaseObserver;
 import com.miekir.network.widget.CustomProgressDialog;
+import com.miekir.network.widget.observe.net.NetStickyObserver;
 
 import io.reactivex.annotations.NonNull;
 import io.reactivex.disposables.Disposable;
@@ -14,18 +14,19 @@ import io.reactivex.disposables.Disposable;
  * 需要进度条时,调用onSubscribe同时显示进度条,
  * 流程走到onComplete/onError时隐藏进度条。
  * @author Miekir
+ * 用于可见,但不可手动取消的网络任务
  */
 
-public abstract class ProgressObserver<T> extends BaseObserver<T> {
+public abstract class BackupObserver<T> extends NetStickyObserver<T> {
     private CustomProgressDialog mProgressDialog;
     private Context mContext;
     private String mText;
 
-    public ProgressObserver(Context context) {
+    public BackupObserver(Context context) {
         this(context, context.getString(R.string.network_loading));
     }
 
-    public ProgressObserver(Context context, String text) {
+    public BackupObserver(Context context, String text) {
         this.mContext = context;
         this.mText = text;
     }
@@ -38,7 +39,7 @@ public abstract class ProgressObserver<T> extends BaseObserver<T> {
         }
         if (mProgressDialog == null) {
             mProgressDialog = new CustomProgressDialog(mContext, mText);
-            mProgressDialog.setCancelable(true);
+            mProgressDialog.setCancelable(false);
             mProgressDialog.setCanceledOnTouchOutside(false);
         }
         mProgressDialog.show();

+ 4 - 4
network/src/main/java/com/miekir/network/core/impl/NetLoadingObserver.java

@@ -1,7 +1,6 @@
-package com.miekir.network.core.impl;
+package com.miekir.network.widget.observe.common;
 
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.base.BaseObserver;
 
 import io.reactivex.annotations.NonNull;
 import io.reactivex.disposables.Disposable;
@@ -12,12 +11,13 @@ import io.reactivex.disposables.Disposable;
  * 流程走到onComplete/onError时隐藏进度条。
  * @author Miekir
  * 变为发送通知增加dialog显示次数
+ * 可见,但不可手动取消的网络任务
  */
 
-public abstract class NetLoadingObserver<T> extends BaseObserver<T> {
+public abstract class LoadingStickyObserver<T> extends StickyObserver<T> {
     private BasePresenter<?> mPresenter;
 
-    public NetLoadingObserver(BasePresenter<?> presenter) {
+    public LoadingStickyObserver(BasePresenter<?> presenter) {
         mPresenter = presenter;
     }
 

+ 3 - 2
network/src/main/java/com/miekir/network/core/base/CommonObserver.java

@@ -1,4 +1,4 @@
-package com.miekir.network.core.base;
+package com.miekir.network.widget.observe.common;
 
 import com.miekir.network.constant.Code;
 import com.miekir.network.utils.ExceptionUtil;
@@ -10,9 +10,10 @@ import io.reactivex.disposables.Disposable;
 /**
  * 返回结果处理
  * @author Miekir
+ * 用于不可见,不可取消的任务
  */
 
-public abstract class CommonObserver<T> implements Observer<T> {
+public abstract class StickyObserver<T> implements Observer<T> {
 
     @Override
     public void onNext(@NonNull T response) {

+ 45 - 0
network/src/main/java/com/miekir/network/widget/observe/net/LoadingNetStickyObserver.java

@@ -0,0 +1,45 @@
+package com.miekir.network.widget.observe.net;
+
+import com.miekir.mvp.presenter.BasePresenter;
+
+import io.reactivex.annotations.NonNull;
+import io.reactivex.disposables.Disposable;
+
+/**
+ * 进度条观察者
+ * 需要进度条时,调用onSubscribe同时显示进度条,
+ * 流程走到onComplete/onError时隐藏进度条。
+ * @author Miekir
+ * 变为发送通知增加dialog显示次数
+ * 可见,但不可手动取消的网络任务
+ */
+
+public abstract class LoadingNetStickyObserver<T> extends NetStickyObserver<T> {
+    private BasePresenter<?> mPresenter;
+
+    public LoadingNetStickyObserver(BasePresenter<?> presenter) {
+        mPresenter = presenter;
+    }
+
+    @Override
+    public void onSubscribe(@NonNull Disposable d) {
+        super.onSubscribe(d);
+        if (d.isDisposed()) {
+            return;
+        }
+
+        mPresenter.showProgress();
+    }
+
+    @Override
+    public void onComplete() {
+        super.onComplete();
+        mPresenter.hideProgress();
+    }
+
+    @Override
+    public void onError(@NonNull Throwable e) {
+        super.onError(e);
+        mPresenter.hideProgress();
+    }
+}

+ 4 - 3
network/src/main/java/com/miekir/network/core/base/BaseObserver.java

@@ -1,5 +1,6 @@
-package com.miekir.network.core.base;
+package com.miekir.network.widget.observe.net;
 
+import com.miekir.network.base.BaseResponse;
 import com.miekir.network.constant.Code;
 import com.miekir.network.utils.ExceptionUtil;
 
@@ -10,9 +11,9 @@ import io.reactivex.disposables.Disposable;
 /**
  * 返回结果处理
  * @author Miekir
+ * 用于不可见,不可手动取消的网络任务,直到Activity销毁
  */
-
-public abstract class BaseObserver<T> implements Observer<BaseResponse<T>> {
+public abstract class NetStickyObserver<T> implements Observer<BaseResponse<T>> {
 
     @Override
     public void onNext(@NonNull BaseResponse<T> response) {