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<T> extends BaseProgressSubscriber<T> implements ProgressCancelListener { 
 | 
  
 | 
    private SubscriberListener mSubscriberListener; 
 | 
    private ProgressDialogHandler mProgressDialogHandler; 
 | 
    private boolean hideLoading = false;// 是否隐藏加载框,默认展示 
 | 
    Disposable disposable; 
 | 
    private Context context; 
 | 
  
 | 
    public ProgressSubscriber() { 
 | 
    } 
 | 
  
 | 
    public ProgressSubscriber(Context context, SubscriberListener<T> mSubscriberListener) { 
 | 
        this.mSubscriberListener = mSubscriberListener; 
 | 
        this.context = context; 
 | 
        try { 
 | 
            mProgressDialogHandler = new ProgressDialogHandler(context, this, true); 
 | 
        } catch (Exception e) { 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public ProgressSubscriber(Context context, boolean hideLoading, SubscriberListener<T> mSubscriberListener) { 
 | 
        this(context, mSubscriberListener); 
 | 
        this.hideLoading = hideLoading; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public ProgressSubscriber iniData(Context context, boolean hideLoading, SubscriberListener<T> 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(); 
 | 
        } 
 | 
    } 
 | 
} 
 |