gpt4 book ai didi

android - 改造 "IllegalStateException: Already executed"

转载 作者:IT老高 更新时间:2023-10-28 22:23:58 25 4
gpt4 key购买 nike

我有一个 ID 喜欢每 5 秒运行一次的 Retrofit 网络调用。我当前的代码:

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: Already executed. at retrofit2.OkHttpCall.enqueue(OkHttpCall.java:52) at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.enqueue(ExecutorCallAdapterFactory.java:57) at orbyt.project.MyFragment$1.run(MyFragment.java:93)

这里有什么问题?

作为奖励:有什么更好的方法来处理这个问题?每次更新都会更新 map 。我正在考虑尝试使用 Rx,但不确定这是否是一个合适的用例,或者如何实现它。

最佳答案

一个调用只能使用一次。 Its documentation告诉你如何多次使用一个:

Use clone() to make multiple calls with the same parameters to the same webserver; this may be used to implement polling or to retry a failed call.

所以使用 call.clone().enqueue(..) 表示 Asynchornouscall.clone().execute() 表示同步 分别以确保您对每个请求都有一个新的、未执行的调用

关于android - 改造 "IllegalStateException: Already executed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35093884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com