我正在使用Volley for Android。我在片段中有一个ListView。如果此ListView为空(仅在连接失败/无互联网/等时可能),我想向服务器发送GET请求以获取数据,如果成功则相应地填充ListView。如果呼叫失败,我想在5分钟内再次呼叫它。这种情况一直持续到成功为止。
实现这一目标的最佳方法是什么?我是Android开发的新手。我读到了有关服务的信息,但IDK是否有点过分。
答案 0 :(得分:2)
您可以使用ScheduledExecutorService来管理和安排您的请求。 看看:
答案 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,并让用户刷新屏幕