Что делать, если ОС убила IntentService?

Допустим, у нас есть реализация IntentService , затем мы запускаем ее из Activity а затем добавляем несколько других Intent s в очередь для IntentService для обработки. Итак, теперь у нас есть первый Intent под обработку, а остальная часть Intent s в очереди. Теперь давайте представим, что ОС убивает наш процесс Application по понятной причине. Вопросы:

  1. Как перезапустить IntentService ?

  2. Как восстановить очередь?

Ну, я знаю, что всегда есть Service которой вы можете переопределить ее onStartCommand() и сообщить Service что делать. Но мне нужна IntentService из-за его модели queue .

IntentService – это не то, что вы хотите использовать, если очередь работы должна быть постоянной. Если вы отправляете множество Intent s в IntentService а затем этот процесс убит Android, нет возможности перестроить очередь. IntentService просто IntentService очередь Intent с помощью внутреннего Handler и они нигде не сохраняются. Они просто теряются.

Если бы я был вами, я бы сам реализовал это сам. Код для IntentService не такой большой, и вы можете посмотреть на него и использовать его в качестве модели для своего собственного Service . Вы захотите записать свою очередь в базу данных, чтобы она была постоянной. Верните START_STICKY из onStartCommand() чтобы Android автоматически перезапустил вашу Service если она была убита из-за требований к ресурсам.