我正在制作一个需要通过HTTP请求获取JSON数据的Android应用程序。要检索的数据可能非常大(100-500mb)。后端是在RESTER(https://github.com/moddity/Rester)
中编写的REST api所以问题是:我一次只能获得10.000个JSON对象(大约10兆字节)。我希望如果可能的话,请求10.000个对象,如果有更多数据需要检索,则请求下一个10.000个对象,依此类推。
现在我正在使用Volley和JSONArrayRequest
private void requestMeasurement(int id, int limit, int offset) {
RequestQueue requestQueue = Volley.newRequestQueue(context);
String url = "http://10.201.201.10:888/index.php/ser" + id + "?limit=" + limit + "&offset=" + offsett;
JsonArrayRequest jsObjectRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsObjectRequest);
}
希望有人可以提供帮助。抱歉任何糟糕的英语:)
更新:试图在onResponse()中再次呼叫请求:
private void requestMeasurement(final int id, final int limit, final int offset) {
requestQueue = Volley.newRequestQueue(context);
String url = "http://10.201.201.10:888/index.php/ser" + id + "?limit=" + limit;
JsonArrayRequest jsObjectRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if (response.length() >= limit) {
requestMeasurement(id, limit, offset+limit);
} else {
Log.i("Completed = ", "true");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsObjectRequest);
}
由于内存不足导致崩溃,我不知道为什么......