我正在开发一个Android新闻应用。移动客户端应用程序通过HttpRequest
和' HttpResponse`从Web服务器获取新闻。
我使用Volley在this article的帮助下异步加载图像。
问题是如果新闻在一段时间内变得过多,使用文章中的示例代码会发生什么。由于它在响应上有一个循环,它似乎一次下载所有json
。
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
Movie movie = new Movie();
movie.setTitle(obj.getString("title"));
movie.setThumbnailUrl(obj.getString("image"));
movie.setRating(((Number) obj.get("rating"))
.doubleValue());
movie.setYear(obj.getInt("releaseYear"));
// Genre is json array
JSONArray genreArry = obj.getJSONArray("genre");
ArrayList<String> genre = new ArrayList<String>();
for (int j = 0; j < genreArry.length(); j++) {
genre.add((String) genreArry.get(j));
}
movie.setGenre(genre);
// adding movie to movies array
movieList.add(movie);
} catch (JSONException e) {
e.printStackTrace();
}
为了不一次下载所有jsons,最好的方法是什么?
答案 0 :(得分:1)
您需要为服务器添加分页。你绝对不想从中下载所有的新闻文章。您需要限制服务器发送给客户端的数据量。每次客户端需要更多数据时,您需要使用当前偏移量对服务器进行额外调用。
假设您点击了一个返回25篇文章的端点http://news.com/api。当用户消费这25篇文章时(你可能想要在他们全部使用25篇文章之前这样做,所以没有延迟),你再次打电话给服务器告诉它发送25篇文章,偏移量为25: http://news.com/api?limit=25&offset=25
您无法限制服务器的响应客户端。这必须在服务器上实现。