public abstract class ProgressObserver?implements Observer {
privateBaseActivitymBaseActivity;
private booleanisShowDialog;
publicProgressObserver(BaseActivity baseActivity) {
this(baseActivity, true);
}
publicProgressObserver(BaseActivity baseActivity, booleanisShowDialog) {
if(baseActivity ==null) {
throw newNullPointerException();
}
this.mBaseActivity= baseActivity;
this.isShowDialog= isShowDialog;
}
@Override
public voidonSubscribe(Disposable d) {
mBaseActivity.addSubscription(d);
onStart();
}
@Override
public voidonNext(Tvalue) {
onProgressNext(value);
}
/**
* --> MyGsonResponseBodyConverter中已對返回數(shù)據(jù)做初步處理
* --> zlc.season.rxjava2demo.retrofit.converter.MyGsonResponseBodyConverter#convert(okhttp3.ResponseBody)
*
*@parameThrowable
*/
@Override
public voidonError(Throwable e) {
if(einstanceofConnectException) {
ToastUtil.show(NetworkUtil.isNetworkConnected(mBaseActivity) ? R.string.net_server_connectexception: R.string.net_connectexception);
}else if(einstanceofUnknownHostException) {
ToastUtil.show(R.string.net_unknownhostexception);
}else if(einstanceofSocketException) {
ToastUtil.show(R.string.net_socketexception);
}else if(einstanceofSocketTimeoutException) {
ToastUtil.show(R.string.net_sockettimeoutexception);
}else if(einstanceofIOException) {
ToastUtil.show(R.string.server_internal_error);
}else if(einstanceofNullPointerException) {
ToastUtil.show(R.string.server_internal_error);
}else if(einstanceofHttpException) {
ToastUtil.show(R.string.server_internal_error);
}else if(einstanceofAppException) {
ToastUtil.showLong(e.getMessage());
AppException exception = (AppException) e;
switch(exception.errorCode) {
caseHttpCode.TOKEN_INVALID:
mBaseActivity.kickOut();
break;
caseHttpCode.BIND_SUCCESS:
ToastUtil.debugShow("手環(huán)綁定成功");
break;
caseHttpCode.THIRD_NO_REGISTER:
ToastUtil.debugShow("第三方登錄時未注冊");
break;
caseHttpCode.THIRD_REPEAT_REGISTER:
ToastUtil.debugShow("第三方登錄時已經(jīng)綁定");
break;
caseHttpCode.PHONE_NUMBER_REPEAT_REGISTER:
ToastUtil.show("手機號碼已注冊");
break;
caseHttpCode.NO_USER_INFO:
ToastUtil.debugShow("無此手機號的用戶信息");
break;
caseHttpCode.BRACELET_INACTIVE:
ToastUtil.debugShow("手環(huán)未激活");
break;
caseHttpCode.USER_BIND_BRACELET:
ToastUtil.debugShow("用戶已綁定手環(huán)");
break;
caseHttpCode.BRACELET_BIND:
ToastUtil.debugShow("手環(huán)已綁定");
break;
caseHttpCode.BRACELET_ACTIVE:
ToastUtil.debugShow("手環(huán)已激活");
break;
caseHttpCode.CONTACT_EXIST:
ToastUtil.show("列表已有此聯(lián)系人");
break;
caseHttpCode.USER_NO_BRACELET:
ToastUtil.show("未綁定手環(huán)");
break;
caseHttpCode.NO_HISTORICAL_DATA:
ToastUtil.show("無歷史數(shù)據(jù)");
break;
default:
break;
}
}else{
ToastUtil.showLong(e.toString());
}
onProgressError(e);
onFinish();
}
@Override
public voidonComplete() {
onFinish();
}
/**
*開始網(wǎng)絡(luò)請求.
*/
public voidonStart() {
if(isShowDialog) {
mBaseActivity.showFocusWaitDialog();
}
}
/**
*結(jié)束網(wǎng)絡(luò)請求.
*/
public voidonFinish() {
if(isShowDialog) {
mBaseActivity.hideFocusWaitDialog();
}
}
//------------------------------抽象方法實現(xiàn)-------------------------------------------------
protected abstract voidonProgressNext(Tvalue);
protected abstract voidonProgressError(Throwable e);
}