Android независимые сервисы, как? - PullRequest
2 голосов
/ 23 сентября 2011

Мне было интересно, есть ли способ создать службу, которая будет работать как собственный процесс, независимый от действия. Я бы хотел, чтобы сервис работал на переднем плане, чтобы он не был убит, а также был доступен для других .apk, которые хотят его использовать. Как я могу это сделать? Я прочитал так много, что это заставило меня немного запутаться, чем я изначально был. Любая помощь приветствуется.

Чтобы уточнить. Я хотел бы запустить сервис, который может общаться со многими .apk. Это собственное приложение без рыночной стоимости. Я пытаюсь сделать так, чтобы .apk мог зарегистрировать там контент-провайдеров, чтобы у всех .apk, использующих эту услугу, был список всех других контент-провайдеров .apk, которые можно использовать.

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

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

В зависимости от типа взаимодействия, которое вы хотите между Сервисом и Активами, вам необходимо определить соответствующие намерения или, возможно,используйте ContentProvider.

ОБНОВЛЕНИЕ :

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

Когда новое действие хочет получить список всех доступных контент-провайдеров, оно может запросить службу с намерением запросить список поставщиков.Служба тогда ответит намерением, которое будет содержать список поставщиков и URI.

Используя эту информацию, отдельные действия могут затем решить, с какими поставщиками контента они хотят взаимодействовать.

0 голосов
/ 23 сентября 2011

Как я могу это сделать?

Вы этого не делаете, поскольку вам не нужно, чтобы это было «как собственный процесс». Просто запустите службу через startService() и позвоните в службу startForeground(). Он может быть частью того же процесса, что и действие, и пользователь сможет отойти от этого действия, если это необходимо, и служба будет работать.

Я бы хотел, чтобы служба работала на переднем плане, чтобы ее не убили

Обратите внимание, что пользователи по-прежнему могут избавиться от вашего сервиса. startForeground() уменьшит шансы Android избавиться от сервиса самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...