离线时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);
}

非常感谢,任何帮助表示赞赏


编辑

因此,我设法使请求在失败后返回到队列。代码如下:

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并且它产生了奇迹

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章