Intereting Posts
Android Geocoder getFromLocationName всегда возвращает null AssertionFailedError: <класс> не имеет открытого конструктора Как я могу редактировать текстовые файлы в папке с ресурсами в android Android onActivityResult всегда 0 Как я могу закодировать свою игру для работы над каждым решением Android-устройств? (С единством) Как уменьшить размер веб-виджета динамически в соответствии с его содержимым? Что такое соглашение для имен пакетов java без ассоциации домена? Возможно ли увидеть данные приложения из оболочки adb так же, как я вижу, что она монтирует SD-карту? Общие элементы и переходы содержимого в фрагментах Фоновые рисунки определяют размер представления Поддерживаются ли приложения Android в обратном направлении? Как добавить пользовательский элемент в NavigationView с помощью макета меню? Получить список установленных приложений для Android Проблема с сетевым носителем JellyBean для Android Отображать изображение по умолчанию NetworkImageView без запроса сети

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

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

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

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

Любые другие идеи приветствуются?

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

Solutions Collecting From Web of "Служба Android, взаимодействующая с несколькими действиями"

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

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

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

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

Определенно более одного действия могут связываться с вашим сервисом. Вы получите onBind () для каждого связанного. Ваша служба тогда идеально будет обрабатывать логику взаимодействия с несколькими действиями, идентифицируя их с помощью идентификатора или намерения (с вашими собственными идентификаторами для каждого вида деятельности как дополнительные) из onBind () в вашей службе. Затем вы могли бы вызвать службу в фоновом потоке для каждого связанного с ней действия.