Сокращение времени синтаксического анализа в Android

#android

#Android

Вопрос:

В моем приложении для Android я следую шаблону MVC и получаю большой файл с сервера. Я хотел бы обновлять пользовательский интерфейс по мере выполнения синтаксического анализа одного или двух объектов. Я имею в виду, что если я получаю 20 объектов movie с сервера, при синтаксическом анализе я хотел бы отобразить содержимое пользователю, когда будут проанализированы 2 фильма и созданы 2 объекта movie. Я выполняю синтаксический анализ в отдельном классе синтаксического анализа и в activity вызываю свою асинхронную задачу.

Пожалуйста, дайте мне знать ваши ценные предложения.

Комментарии:

1. Обязательно ли загружать эти 20 фильмов в один файл или вы могли бы сначала загрузить 2 фильма, а затем остальные после этого? Это упростило бы просмотр двух фильмов перед продолжением загрузки.

2. Код, который у меня есть, предназначен для полного синтаксического анализа в моем классе синтаксического анализа и возвращает объект list of Movies. Что мне нужно, так это то, что с сервера я буду получать 20 фильмов подряд. Во время синтаксического анализа я хотел бы проанализировать его полностью, но обновить пользователя после получения 3 объекта movie.

Ответ №1:

Вы могли бы добавить метод downloadMoviesAsynchronously :

 public static interface MoviesDownloadedHandler {
    public void run(Movie[] movies);
}

public void downloadMoviesAsynchronously(final MoviesDownloadedHandler downloadedFirstTwo, final MoviesDownloadedHandler downloadedAll) {
  new Thread(new Runnable() {
    public void run() {
      int count = getMovieCount();
      Movie[] movies = new Movie[count];
      for (int i = 0; i < count; i  ) {
        movie[i] = downloadMovie();
        if (i == 1) // second movie
          downloadedFirstTwo.run(movies);
      }
      downloadedAll.run(movies);
    }
  }).start();
}
  

Затем пользовательский интерфейс может вызвать этот метод и указать некоторые обработчики событий, которые обновляют пользовательский интерфейс.

Комментарии:

1. На самом деле в моем приложении весь список фильмов объединяется в один json. Мне нужна функция синтаксического анализа, например, как обновлять пользовательский интерфейс после анализа каждых 3 фильмов

2. Насколько велик ваш json, что для его анализа требуется заметное время? Я не думаю, что сами видеоданные находятся в строке json, поэтому синтаксический анализ наверняка не займет больше секунды, не так ли?