Как я могу передать событие из приложения в активность в Android? - PullRequest
0 голосов
/ 26 марта 2012

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

У меня есть приложение для Android, которое расширяет Приложение , чтобы настроить некоторые основные функции для клиента TCP. Существует несколько различных экранов Activity , которые должны взаимодействовать с Application . Я застрял на том, что делать, когда пакет Application получает пакет данных. Я хочу передать его видимой в данный момент Activity , какой бы она ни была.

Исходя из фона C #, я просто создаю Событие в Приложении и просто подписываюсь на это событие, когда создается Активность . Но я путаюсь с Слушателями Java, Обработчиками, ...

Какой лучший способ сделать это? Должен ли я делать Услуги вместо этого? (Но мне все равно, будет ли прервано соединение TCP, когда приложение не отображается.)

1 Ответ

1 голос
/ 26 марта 2012

Я бы выбрал подход LocalBroadcastManager ( документация ).

Создайте одного из этих щенков в своем классе Application и зарегистрируйте / отмените регистрацию ваших Activity объектов в onStart и onStop. Смотри Context.registerReceiver. Обратите внимание, что для этого необходимо использовать Intent s, что может быть слишком ограничительным / тяжелым для вашего приложения; упаковка / распаковка данных может быть рутиной.

В качестве альтернативы вам не нужно использовать какой-либо определенный класс android для этого - просто следите за тем, в чем участвует Activity ваша программа, посредством вызовов ваших Application in onStart и onStop. Может помочь в очистке вашего кода, если вы сделаете все интересующие вас действия расширением подкласса Activity, который содержит эту логику.

...