Удаленная служба все еще работает после отмены привязки, остановка службы даже с привязанными приложениями - PullRequest
0 голосов
/ 08 мая 2018

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

Моя проблема возникает, когда я закрываю все приложения, использующие службу, потому что для каждого приложения удаление уничтожается из службы, но служба все еще работает.

Кроме того, я использую сервис только по привязке, а не по startService ().

Я проверил через android studio, что сервис закрывается после закрытия приложений, и счетчик, который я имею в сервисе для каждого вызова bind / unbind, равен 0 !. Я увеличиваю счетчик, когда есть вызов для привязки, и уменьшаю для вызовов для отмены. Мой единственный способ остановить службу - открыть базовое приложение, для которого определена служба, и закрыть его.

Редактировать: Также заметил, что onBind вызывается только один раз, даже для других приложений, которые являются обязательными, но ссылка для всех этих приложений остается той же службой, они совместно используют одну и ту же информацию, и в Android отображается только одна служба студия.

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

Что происходит и что я могу с этим поделать?

1 Ответ

0 голосов
/ 09 мая 2018

Для двух вопросов:

Мне удалось проверить, что CommonsWare сказал, что процесс, в котором запущена служба, все еще работает, а сама служба - нет. Сначала у меня был поток, работающий в службе после каждого несвязанного приложения, но после того, как он был проверен, в конце концов служба была уничтожена.

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

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

...