Я пытаюсь осуществить рефакторинг/перепроектировать приложение для 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
одновременно? Существует ли способ сказать сервису предоставлять данные определенному действию только?
Какие-либо другие идеи приветствуются?
Заранее спасибо.
Я обычно привязываю свою службу к классу Application и использую какой-то класс контроллера (вроде "посредника", я думаю ... не знаю, как названы все эти шаблоны) в приложении, которое обрабатывает связь между службами и всем остальным. активная активность есть.
Это потребует написания собственного класса Application и указания манифесту использовать его. Я подробно описал этот процесс в предыдущем потоке:
Более эффективный способ обновления пользовательского интерфейса из службы, чем намерения?
Вы можете отслеживать «текущую активную» активность, отправив классу приложения ссылку на себя в onResume (также объяснено в примере выше). Этого можно достичь, создав ваши Activity из общего базового класса, у которого есть способ получить ваш класс Application (приведение из getApplicationContext), и в этом базовом классе onResume отправить в приложение ссылку на себя. Затем вы можете зарегистрировать действия по имени, например, в DataServiceController и отправлять сообщения в текущее действие, только если оно зарегистрировано в контроллере для их получения.