У меня есть приложение, в котором есть IntentService для фоновой обработки, в частности, оно извлекает данные из сети и сохраняет их в базе данных Sqlite. Мои действия используют Context.startService() для запроса службы на обновление данных, и служба отправляет локальное широковещательное сообщение, когда обновление завершено.
IntentService использует пул потоков для выполнения работы — в первую очередь в случае, если новое действие открывается до завершения запроса, поэтому новый запрос для другого ресурса не будет блокироваться в ожидании завершения предыдущего.
Все это работает нормально, но для предотвращения нескольких одновременных запросов к одному и тому же ресурсу я устанавливаю флаг в действии после того, как оно отправило запрос, который останавливает отправку новых запросов до тех пор, пока оно не получит сообщение DONE от службы.
Теперь, если IntentService был уничтожен в середине операции, он никогда не отправит сообщение DONE, а Activity никогда не узнает, что запрос не выполнен, и не будет повторно запрашивать ресурс. Это возможно? И если это произойдет, есть ли способ сообщить Activity?