package com.dayu.qiheonlinelibrary.net.subscribers; import android.content.Context; import com.dayu.qiheonlinelibrary.net.progress.ProgressCancelListener; import com.dayu.qiheonlinelibrary.net.progress.ProgressDialogHandler; import io.reactivex.rxjava3.disposables.Disposable; /** * Created by qwy on 16/3/10. * 用于在Http请求开始时,自动显示一个ProgressDialog * 在Http请求结束是,关闭ProgressDialog * 调用者自己对请求数据进行处理 */ public class ProgressSubscriber extends BaseProgressSubscriber implements ProgressCancelListener { private SubscriberListener mSubscriberListener; private ProgressDialogHandler mProgressDialogHandler; private boolean hideLoading = false;// 是否隐藏加载框,默认展示 Disposable disposable; private Context context; public ProgressSubscriber() { } public ProgressSubscriber(Context context, SubscriberListener mSubscriberListener) { this.mSubscriberListener = mSubscriberListener; this.context = context; try { mProgressDialogHandler = new ProgressDialogHandler(context, this, true); } catch (Exception e) { } } public ProgressSubscriber(Context context, boolean hideLoading, SubscriberListener mSubscriberListener) { this(context, mSubscriberListener); this.hideLoading = hideLoading; } @Override public ProgressSubscriber iniData(Context context, boolean hideLoading, SubscriberListener mSubscriberListener) { return new ProgressSubscriber(context, hideLoading, mSubscriberListener); } private void showProgressDialog() { if (mProgressDialogHandler != null && !hideLoading) { mProgressDialogHandler.obtainMessage(ProgressDialogHandler.SHOW_PROGRESS_DIALOG).sendToTarget(); } } public void dismissProgressDialog() { try { if (mProgressDialogHandler != null) { mProgressDialogHandler.obtainMessage(ProgressDialogHandler.DISMISS_PROGRESS_DIALOG).sendToTarget(); mProgressDialogHandler = null; } } catch (Exception e) { e.printStackTrace(); } } /** * 订阅开始时调用 * 显示ProgressDialog */ @Override public void onMyStart(Disposable d) { if (mSubscriberListener != null) { mSubscriberListener.onStart(); } disposable=d; showProgressDialog(); } @Override public void onCloose() { mSubscriberListener.onCloose(); } /** * 完成,隐藏ProgressDialog */ @Override public void onMyCompleted() { if (mSubscriberListener != null) { mSubscriberListener.onCompleted(); } dismissProgressDialog(); } /** * 对错误进行统一处理 * 隐藏ProgressDialog * * @param e */ @Override public void onMyError(Throwable e) { if (mSubscriberListener != null) { mSubscriberListener.onError(e); } dismissProgressDialog(); } /** * 将onNext方法中的返回结果交给Activity或Fragment自己处理 * * @param t 创建Subscriber时的泛型类型 */ @Override public void onMyNext(T t) { if (mSubscriberListener != null) { mSubscriberListener.onNext(t); } } /** * 取消ProgressDialog的时候,取消对observable的订阅,同时也取消了http请求 */ @Override public void onCancelProgress() { if (!disposable.isDisposed()) { disposable.dispose(); } } }