我正在使用 Android studio 2.3.3 开发应用程序。
我正在使用 Observable 进行 rest api 调用。 它在大约 10 秒后超时,而我的服务器需要 20 秒来处理和响应。
我尝试按照下面的代码 fragment 设置超时值。但它仍然在 10 秒左右超时。
goalService.saveGoal(appState.getUserId(), goal)
.timeout(30, TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.timeout(30, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.timeout(30, TimeUnit.SECONDS)
.subscribe(new Subscriber<Goal>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
inProgress = false;
e.printStackTrace();
if (isViewAttached()) {
getView().hideLoader();
handleError(e);
}
}
@Override
public void onNext(Goal goal) {
}
它使用 java.net.SocketTimeoutException: timeout 命中了 onError 方法
如何找出超时的确切原因? 我如何为这种情况设置超时值?
最佳答案
使用定时任务:
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
...
}
};
new Timer().schedule(doAsynchronousTask, (your needed seconds * 1000));
关于android - 无法在 java observable 上设置超时值不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802084/