Почему список в моей службе уничтожается?

#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:

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