Сервис Android, взаимодействующий с несколькими операциями

Я пытаюсь осуществить рефакторинг/перепроектировать приложение для Android. В настоящее время у меня есть одно действие UI (Activity 1) это создает a DataThread. Этот поток ответственен за сеть I/O и взаимодействует (обеспечивает данные) с действием UI через a handler.

Теперь, я хочу добавить другое действие (новый экран UI с Видео) - Activity 2. Activity 1 все еще основной вид деятельности. Activity 2 будет вызван, когда пользователь нажмет кнопку на Activity 1. Activity 2данные также прибывают из DataThread.

Моя идея состоит в том, чтобы поместить логику моего DataThread в Android Service (DataService). Мой вопрос - может, больше, чем на действии связывают с моим DataService одновременно? Существует ли способ сказать сервису предоставлять данные определенному действию только?

Какие-либо другие идеи приветствуются?

Заранее спасибо.

10
задан Soumya Simanta 29 June 2010 в 14:29
поделиться

1 ответ

Я обычно привязываю свою службу к классу Application и использую какой-то класс контроллера (вроде "посредника", я думаю ... не знаю, как названы все эти шаблоны) в приложении, которое обрабатывает связь между службами и всем остальным. активная активность есть.

Это потребует написания собственного класса Application и указания манифесту использовать его. Я подробно описал этот процесс в предыдущем потоке:

Более эффективный способ обновления пользовательского интерфейса из службы, чем намерения?

Вы можете отслеживать «текущую активную» активность, отправив классу приложения ссылку на себя в onResume (также объяснено в примере выше). Этого можно достичь, создав ваши Activity из общего базового класса, у которого есть способ получить ваш класс Application (приведение из getApplicationContext), и в этом базовом классе onResume отправить в приложение ссылку на себя. Затем вы можете зарегистрировать действия по имени, например, в DataServiceController и отправлять сообщения в текущее действие, только если оно зарегистрировано в контроллере для их получения.

4
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: