Передача обработчика между действиями - PullRequest
1 голос
/ 21 января 2012

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

Основное действие уведомляется о результатах потоков через обработчики (даже его состояние onPause() из-за запуска вспомогательного действия). Я хочу сделать то же самое между основным и дополнительным действиями следующим образом:

Я передаю другой обработчик из под действия в основное действие, вызывая ((MainActivity) getParent()).setMainActivityHandler(handler), чтобы инициализировать обработчик в основном действии, где setMainActivityHandler() - это просто метод инициализации обработчика в основном действии. Затем, когда Поток отправляет Message в основное действие через свои обработчики, основное действие отправляет тот же массаж или модифицированную версию другого Message в вспомогательное действие через другой обработчик. Таким образом, подактивность обновит представление в соответствии с содержанием этого сообщения.

Однако ((MainActivity) getParent()) возвращает null. Как мне это удается? Есть ли другой метод?

PS: Оба вида деятельности расширяют активность. Файл манифеста имеет фильтр намерений для основной деятельности (action.VIEW & category.DEFAULT), НЕТ фильтра намерений для вспомогательной деятельности.

1 Ответ

0 голосов
/ 21 января 2012

Вместо прямого обработчика вы хотите использовать для этого Messenger, который предназначен для обмена сообщениями между процессами и операциями.

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

Вы можете попробовать объявить статический мессенджер во втором действии, инициализируя его, когда подпрограмма-активность создается и отправляет ему сообщения от основного действия, когда статический мессенджер не равен нулю (обнуляет его при приостановке / уничтожении этого подэтапа, или отслеживает статически, если он отображается или нет)

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