Files
daikuan/telebol/src/main/java/com/dskj/cashly/api/BaseObserver.java
2026-03-21 11:02:14 +08:00

131 lines
3.4 KiB
Java

package com.dskj.cashly.api;
import android.content.Intent;
import com.dskj.cashly.InitApp;
import com.dskj.cashly.bean.BankBean;
import com.dskj.cashly.ui.activity.LoginActivity;
import com.google.gson.JsonParseException;
import org.json.JSONException;
import java.io.InterruptedIOException;
import java.net.ConnectException;
import java.net.UnknownHostException;
import java.text.ParseException;
import java.util.List;
import io.reactivex.observers.DisposableObserver;
import retrofit2.HttpException;
public abstract class BaseObserver<T> extends DisposableObserver<T> {
/**
* 解析数据失败
*/
public static final int PARSE_ERROR = 1001;
/**
* 网络问题
*/
public static final int BAD_NETWORK = 1002;
/**
* 连接错误
*/
public static final int CONNECT_ERROR = 1003;
/**
* 连接超时
*/
public static final int CONNECT_TIMEOUT = 1004;
@Override
public void onNext(T o) {
try {
Result model = (Result) o;
if (model.code == 1) {
onSuccess(o);
} else {
onError(model.code,model.msg);
if(model.code == -996){
InitApp.setToken("");
InitApp.setUserToken("");
reStart();
}
}
} catch (Exception e) {
e.printStackTrace();
onError(407,e.toString());
}
}
/*** 重新启动应用*/
public void reStart(){
Intent launch= InitApp.getAppContext().getPackageManager()
.getLaunchIntentForPackage(InitApp.getAppContext()
.getPackageName());
launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
InitApp.getAppContext().startActivity(launch);
}
@Override
public void onError(Throwable e) {
if (e instanceof HttpException) {
// HTTP错误
onException(BAD_NETWORK);
} else if (e instanceof ConnectException
|| e instanceof UnknownHostException) {
// 连接错误
onException(CONNECT_ERROR);
} else if (e instanceof InterruptedIOException) {
// 连接超时
onException(CONNECT_TIMEOUT);
} else if (e instanceof JsonParseException
|| e instanceof JSONException
|| e instanceof ParseException) {
// 解析错误
onException(PARSE_ERROR);
} else {
if (e != null) {
onError(409,e.toString());
} else {
onError(407,"未知錯誤");
}
}
}
private void onException(int unknownError) {
switch (unknownError) {
case CONNECT_ERROR:
onError(CONNECT_ERROR,"連接錯誤");
break;
case CONNECT_TIMEOUT:
onError(CONNECT_TIMEOUT,"連接超時");
break;
case BAD_NETWORK:
onError(BAD_NETWORK,"網絡問題");
break;
case PARSE_ERROR:
onError(PARSE_ERROR,"數據解析异常");
break;
default:
break;
}
}
@Override
public void onComplete() {
}
public abstract void onSuccess(T o);
public abstract void onError(int code,String msg);
}