如何使用齐射

时间:2015-06-11 12:31:00

标签: android json android-volley

我正在使用this排球榜样

它完美无缺,但是当我将数据的响应更改为来自服务器的150多条记录时,需要很长时间才能加载。

所以我想加载少量数据5-10记录然后另外5-10条记录。

我怎么能用Volley做到这一点?

2 个答案:

答案 0 :(得分:1)

Volley将获取它应该在客户端(移动端)接收的所有响应。无法在客户端或移动端完成此类行为。

这应该在APIserver side中通过在服务中实施pagination来完成,如下所示:

  

http://serviceendpoint.com?start=0&&end=5获取前五个记录   http://serviceendpoint.com?start=5&&end=10获取下五个记录。

//Constant Variable denoting after how many  
//to call in one service
//items numbers you need

private final int LIST_FETCH_COUNT =5;
private final int TOTAL_COUNT=1500;
private int start=0;
private int end=0;

//you can do something like this

for(int i=0;i<TOTAL_COUNT;i+=LIST_FETCH_COUNT){
    callAsyncService(i,i+LIST_FETCH_COUNT);
}

private void callAsyncService(int start,int end){

    //create a new async object
    asynObject.execute(Void,Void,start,end);
}

//inside your async

doInBackground(params...){

    //get start and end values from params and run a service
}

答案 1 :(得分:0)

您可以使用AsyncTask执行以下操作:

private class DatabaseTask extends AsyncTask<URL, Integer, String> {
 protected String doInBackground(URL... urls) {

    //put here your volley query.

     }
     return results;
 }

 protected void onProgressUpdate(Integer... progress) {

     //You can show the progress of the download with this function:
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(String results) {
   //Parse the results here and show them in the UI.
 }
}

然后,假设您正在尝试连接到在线数据库(例如MySQL数据库),您可以轻松地为数据库实现PHP接口,该接口仅返回您想要的记录数量(例如10)并调用DatabaseTask无论什么时候需要记录。 或者,您可以在计时器上执行单独的线程,该计时器会在计时器触发时发送查询。