2015-07-16 3 views
3

Мне нужно разработать библиотеку Android, которая имеет компонент обслуживания. Требования услуг являются:Модуль библиотеки Android с возможностью расширения

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

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

Каков наилучший подход для достижения моей цели? Каким образом базовый сервис должен взаимодействовать с клиентским расширением?

ответ

1

Таким образом, первый клиент должен будет добавить эту услугу к своему AndroidManifest.xml. Затем клиент вызовет некоторые методы из библиотеки, которые запустит службу или службу будильника, в зависимости от ваших потребностей.

Связь зависит от данных, которые вы хотите отправить из сервиса в приложение клиента. Если это всего лишь уведомление, лучшим способом было бы использовать BroadcastReceiver. Если вы зарегистрируете приемник в AndroidManifest.xml, он получит намерения даже тогда, когда приложение не запущено.

Если вы хотите отправить много объектов или вызвать какой-либо метод в службе, вы можете использовать ServiceConnection и переплет.

Например, вам нужен ваш клиент для получения List<Model> со службы, даже если клиент не запущен. Вы объявляете BroadcastReceiver в AndroidManifest.xml, который получит определенное намерение в зависимости от фильтра намерений. Затем вы связываетесь с вашим сервисом через ServiceConnection и передаете объект обратного вызова. После этого вы запускаете фоновый поток внутри своей службы для загрузки данных. Как только это будет сделано, вы вызовете метод обратного вызова, и ваше клиентское приложение получит данные.

Не уверен, ответил ли я на ваш вопрос, потому что он немного абстрактный.

+0

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

+1

, если 'BroadcastReceiver' объявлен в' AndroidManifest.xml', он всегда будет получать намерения. Если приложение выключено, оно запустит приложение и получит намерение. –

+0

только что подтвержденный, широковещательный приемник отлично работает в моем случае, спасибо –

Смежные вопросы