Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android新闻应用程序-不要一次下载所有json_Android_Json_Listview_Android Volley - Fatal编程技术网

Android新闻应用程序-不要一次下载所有json

Android新闻应用程序-不要一次下载所有json,android,json,listview,android-volley,Android,Json,Listview,Android Volley,我正在开发一个android新闻应用程序。移动客户端应用程序通过HttpRequest和“HttpResponse”从web服务器获取新闻 我使用Volley在的帮助下异步加载图像 问题是,如果新闻在这段时间内变得太多,那么使用本文中的示例代码会发生什么。由于它在响应上有一个循环,它似乎一次下载所有的jsons // Parsing json for (int i = 0; i < response.length(); i++) {

我正在开发一个android新闻应用程序。移动客户端应用程序通过
HttpRequest
和“HttpResponse”从web服务器获取新闻

我使用Volley在的帮助下异步加载图像

问题是,如果新闻在这段时间内变得太多,那么使用本文中的示例代码会发生什么。由于它在响应上有一个循环,它似乎一次下载所有的
json
s

 // 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();
                            }
//解析json
对于(int i=0;i

为了避免一次下载所有JSON,最好的方法是什么?

您需要向服务器添加分页。您肯定不想从服务器下载所有的新闻文章。您需要限制服务器发送给客户端的数据量。每当客户端需要更多数据时,您都需要额外调用serv用当前的偏移量

假设您点击了一个返回25篇文章的端点。当用户消费了这25篇文章时(您可能希望在他们消费全部25篇文章之前这样做,因此没有延迟),您向服务器发出另一个呼叫,告诉它向您发送25篇文章,偏移量为25:


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

在返回JSON提要的脚本中设置一个限制。请看本教程:,在页面末尾,他添加了可以帮助您限制返回数据的php代码。您所要做的就是安排数据,以便返回相关数据例如,按日期订购descending@Manny264请你解释一下,作为回答,我是新手,如果你再解释一下,我将不胜感激。检查更新@BzH脚本来自一个你认为正确的服务器?谢谢@Manny264,你的链接很有帮助,那么投票就好了:)@BzH