luk*_*ris 7 android offline http-get request android-volley
我已经搜遍了所有但没有找到答案.
在我的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);
}
Run Code Online (Sandbox Code Playgroud)
非常感谢,任何帮助表示赞赏
所以我设法让请求在失败后返回队列.代码如下:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
剩下的问题是,如果我杀了应用程序,队列就会被销毁,而且永远不会发出请求.
注意到有些人喜欢这个问题.我最终使用Path(https://github.com/path/android-priority-jobqueue)对作业进行了一些修改.它工作得很好.只是希望Volley有一个原生的方式来做这件事
归档时间: |
|
查看次数: |
1715 次 |
最近记录: |