Android:每x分钟向服务器发送一次请求,相应地更新UI

时间:2014-12-22 08:06:32

标签: android android-volley

我正在使用Volley for Android。我在片段中有一个ListView。如果此ListView为空(仅在连接失败/无互联网/等时可能),我想向服务器发送GET请求以获取数据,如果成功则相应地填充ListView。如果呼叫失败,我想在5分钟内再次呼叫它。这种情况一直持续到成功为止。

实现这一目标的最佳方法是什么?我是Android开发的新手。我读到了有关服务的信息,但IDK是否有点过分。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我用一个图层来定义我对服务的所有调用。让我们说ServiceLayer.java。例如。

您可以将Handler定义为全局变量。 (您需要在MainThread中创建ServiceLayer)。然后管理服务调用中的错误,使处理程序在5分钟内调用服务。像这样的东西

public class ServiceLayer {

Handler handler = new Handler();
...

public void callToService(final String parameter,final String moreParameters,final Callback callbackDefinedByYou){

    StringRequest req = new StringRequest(Method.GET, url, new Response.Listener<String>(){
        @Override
        public void onResponse(String s) {
            //Do whatever you need, populate listviews etc
            callbackDefinedByYou.populateListView(s);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {
            //Manage the error and recall again this service
            callbackDefinedByYou.onError(volleyError);
            handler.postDelayed(new Runnable() {
               public void run(){
                   callToService(parameter, moreParameter, callbackDefinedByYou);
               }

            }, 300000); //5 minutes
        }
    });

    VolleyHelper.addRequestToQueue(req);
}

在此代码中,每次服务失败都会进行召回,但在某些情况下,您应该停止进行网络呼叫。例如,当您检测到没有互联网conexion,并让用户刷新屏幕