Android: лучший контроль над обновлением пользовательского интерфейса - PullRequest
0 голосов
/ 01 марта 2012

Мое приложение выполняет ряд обновлений пользовательского интерфейса в непосредственной близости, например:

  1. Пользователь получает ход, и все плитки вида сетки обновляются
  2. ИИ принимает ход, и все плитки вида сетки обновляются
  3. ИИ делает еще один ход, и все плитки вида сетки обновляются

Чтобы каждое из этих обновлений было видно пользователю, я добавил каждую из этих задач обновления в обработчик в потоке, не являющемся пользовательским интерфейсом. Эти задачи адаптера notifyDataSetChanged () затем добавляются в обработчик потока пользовательского интерфейса.

Тем не менее, единственный способ сделать каждое обновление отчетливым, это указать Thread.sleep () после его запуска. Даже с этим сном иногда 2 и 3 объединяются, и пользователь видит только 3.

Кроме того, при выполнении 3 иногда требуется дополнительная доля секунды для обновления всей сетки. Таким образом, вместо 3 чистых обновлений сетки, пользователь увидит 4.

Насколько я вижу, я выполняю функцию обработчика в соответствии с рекомендациями руководства по программированию. Поэтому мне интересно, что еще я могу сделать, чтобы лучше контролировать, когда обновляется пользовательский интерфейс? Я могу что-нибудь сделать?

1 Ответ

0 голосов
/ 06 марта 2012

На этот вопрос ответил dmon выше. Решение заключалось в публикации Runnable в GridView.post () после того, как я вызвал notifyDataSetChanged в моем адаптере. Игра работает немного медленнее, чем раньше, но, по крайней мере, все операции пользовательского интерфейса отображаются правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...