gpt4 book ai didi

离线时的 Android Volley 存储请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:28 25 4
gpt4 key购买 nike

我到处搜索,但没有找到答案。

在我的 Android 应用程序中,用户可以离线使用该应用程序,并且某些事件会向我的服务器生成 http GET 请求。我正在使用 Volley,当用户在线时请求正常工作,但离线时它们会立即失败并从请求队列中删除。

我希望 Volley 存储这些请求,并在服务器可访问时重试,或者至少继续尝试。这种行为可能吗?

这是我做事的方式:

StringRequest request = new StringRequest(Request.Method.GET, url, listener, listener);
request.setRetryPolicy(new DefaultRetryPolicy(8000, 2, 1.5f));
postToDefaultQueue(request);

private void postToDefaultQueue (StringRequest request) {
if (sQueue == null) {
sQueue = Volley.newRequestQueue(mContext.get());
}
sQueue.add(request);
}

非常感谢,感谢任何帮助


编辑

所以我设法让请求在失败后回到队列中。代码如下:

private class DummyListener implements Response.Listener<String>, Response.ErrorListener {
String mUrl;
public DummyListener (String url){
mUrl = url;
}
@Override
public void onErrorResponse(final VolleyError error) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Log.v(DummyListener.class.getSimpleName(), "ErrorResponse", error);
offlineStringGetRequest(mUrl);
}
}, 5000);
}

@Override
public void onResponse(String response) {
Log.d(DummyListener.class.getSimpleName(), "Response: " + response);
}
}

剩下的问题是,如果我终止应用程序,队列将被破坏,并且永远不会发出请求。


编辑2

注意到有人喜欢这个问题。我最终使用 Path ( https://github.com/path/android-priority-jobqueue ) 对工作进行了一些修改。它工作得很好。只希望 Volley 有一种原生的方式来做到这一点

最佳答案

因为我找不到用 Volley 做到这一点的方法,所以我最终使用了 Path而且效果很好

关于离线时的 Android Volley 存储请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465475/

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