Обработка кода пользовательского интерфейса из потока - PullRequest
2 голосов
/ 07 февраля 2010

Я знаю, как использовать обработчики для обновления элементов пользовательского интерфейса, таких как индикаторы выполнения и т. Д.

Проблема, с которой я сталкиваюсь, заключается в том, что контекст исчезает, например, когда пользователь нажимает кнопку «Назад» или «Деятельность» по какой-то причине завершается. Это приводит к частому сбою приложения.

Я пытался использовать getApplicationContext () (полагая, что это будет доступно для всего моего приложения), но это не сработало, никогда - вместо этого мое приложение зависло!

Я поставил блоки try try вокруг всего кода обновления интерфейса, это работает, но нужно ли это?

Итак ... какой самый лучший способ справиться с этим?

1 Ответ

4 голосов
/ 07 февраля 2010

Проблема, которую я имею, когда контекст уходит, как пользователь нажав кнопку назад или Деятельность по какой-то причине заканчивается. Это приводит к сбою приложения часто.

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

Я пытался использовать getApplicationContext () (Думая, что это будет доступно на протяжении всего моего приложения) но это не сработало, никогда - вместо моего приложение упало!

Контекст приложения бесполезен с точки зрения управления пользовательским интерфейсом.

Итак ... какой самый лучший способ справиться с этим?

В конце концов, вам нужно, чтобы ваш поток доставил событие нужному мероприятию. Некоторые методы, которые использовали люди, включают:

  • Использовать шаблон прослушивателя (например, служба управляет потоком, регистр действий и отменять регистрацию прослушивателей в службе, поток вызывает прослушиватели для ключевых событий)
  • Поместите «текущий» экземпляр действия в элемент статических данных, который поток использует, чтобы выяснить, какой из них следует использовать (опасно из-за утечек памяти и сбоев, если вам нужно несколько экземпляров)
  • Ограничить фоновые потоки теми, которые кэшируют данные, которые активность извлекает (например, посредством опроса) по мере необходимости
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...