Сохранение работоспособности Intent Service после применения

У меня есть намерение в моем приложении. У этой службы есть определенная задача – загрузить некоторые файлы. Он работает только тогда, когда есть что-то делать.

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

Проблема в том, что служба убивается с помощью приложения, даже если оно что-то делает, например:

  1. Приложение отправляет намерение на обслуживание
  2. Служба начала загружать что-то, все отлично
  3. X% загружено, приложение убито, служба убита
  4. Интернет-соединение изменилось – служба проснулась.

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

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

Solutions Collecting From Web of "Сохранение работоспособности Intent Service после применения"

«Он работает только тогда, когда есть что-то делать». Только теоретически 🙂 – может быть, это то, чего вы хотите достичь.

«Проблема заключается в том, что служба убивается с помощью приложения, даже если оно что-то делает, например:« Конечно, будут случаи, когда действие пользователя закончится службой «Служба» или «Цель». Это ответ с ошибкой.

«Есть ли способ предотвратить убийство службы, когда приложение убито?» Он просто следит за ключевыми словами «защита прав» родительского контроля в Google!

Поскольку вы использовали намерение, которое означает, что намерение будет уничтожено после того, как активность будет уничтожена, вам придется использовать Сервис вместо намерения, поэтому вы можете взломать свой файл в backgroud.

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

Редактировать :

Услуга может быть запущена из любого потока.

IntentService должен запускаться из основного потока.

Если вы не возражаете показывать уведомление (в вашем случае вы можете, например, показать уведомление с успехом загрузки), то в своем IntentService (или услуге) вы можете позвонить:

StartForeground (int id, уведомление уведомления)

Это должно предотвратить убийство вашего сервиса, когда ваше приложение будет убито.

Из документации: «Вы можете установить этот флаг, если убийство вашей службы будет нарушать работу пользователя, например, если ваша служба выполняет фоновое воспроизведение музыки, поэтому пользователь заметил бы, если их музыка перестанет играть».