Android新闻应用 - 不要立即下载所有json

时间:2015-06-24 18:52:22

标签: android json listview android-volley

我正在开发一个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,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要为服务器添加分页。你绝对不想从中下载所有的新闻文章。您需要限制服务器发送给客户端的数据量。每次客户端需要更多数据时,您需要使用当前偏移量对服务器进行额外调用。

假设您点击了一个返回25篇文章的端点http://news.com/api。当用户消费这25篇文章时(你可能想要在他们全部使用25篇文章之前这样做,所以没有延迟),你再次打电话给服务器告诉它发送25篇文章,偏移量为25: http://news.com/api?limit=25&offset=25

您无法限制服务器的响应客户端。这必须在服务器上实现。