我有一个改造网络调用,id 喜欢每 5 秒运行一次。我当前的代码:
Handler h = new Handler();
int delay = 5000; //milliseconds
h.postDelayed(new Runnable() {
public void run() {
call.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(Response<ApiResponse> response) {
Log.d("api", "response: " + response.body().getPosition().getLatitude().toString());
}
@Override
public void onFailure(Throwable t) {
}
});
h.postDelayed(this, delay);
}
}, delay);
这运行一次,但随后抛出以下内容:
java.lang.IllegalStateException:已经执行。在 retrofit2.OkHttpCall.enqueue(OkHttpCall.java:52) 在 retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.enqueue(ExecutorCallAdapterFactory.java:57) 在 orbyt.project.MyFragment$1.run(MyFragment.java:93)
这里有什么问题?
作为奖励:有什么更好的方法来处理这个问题?每次更新都会更新地图。我正在考虑尝试使用 Rx,但不确定这是否是一个合适的用例,或者如何实现它。