#android #android-service
#Android #android-сервис
Вопрос:
У меня есть приложение с основным действием. Я добавляю данные в список в сервисе с помощью связующего. В то же время я запускаю службу, которая работает в фоновом режиме. Когда я закрываю и перезапускаю приложение, мой список данных в службе уничтожается. Почему это происходит?
Ответ №1:
Возможно, ваша служба была уничтожена, и если вы использовали START_STICKY, она была просто перезапущена без каких-либо параметров (как отдельная служба). Я думаю, вам следует каким-то образом сохранить информацию о том, что служба была вызвана с параметром, и сохранить ее, например, в базе данных. Когда служба завершит обработку ваших данных, удалите эту информацию и разрешите ее повторный вызов.
Поскольку он находится в запущенном состоянии, он гарантирует вызов onStartCommand(Intent, int, int) после создания нового экземпляра службы; если в службе нет ожидающих отправки команд запуска, она будет вызвана с объектом null intent, поэтому вы должны позаботиться о проверкедля этого.
Ответ №2:
Когда вы привязываетесь к a Service
, жизненный цикл Service
зависит от того, который выполняет привязку (в вашем случае Activity
). Итак, если вы выполните отвязку в onPause
/ onStop
Service
, он будет уничтожен.
Если вы начнете Service
использовать START_STICKY
его, он будет работать до тех пор, пока не будет остановлен пользователем в коде или Android OS
(когда ему нужны ресурсы.
(В зависимости от того, что вам действительно нужно), я бы посоветовал сохранить его в SharedPreferences или другим способом (например SQLite
, DB). Чтобы предотвратить потерю данных, когда что-то убивает или останавливает Service
.
Ответ №3:
Обычно ваша служба не уничтожается каждый раз, но если другому приложению требуется больше ресурсов, а на устройстве их нет, ОС может остановить ваше приложение.