Android: состояние силы убитых приложений

Насколько я могу читать, Android может убить мой процесс в любое время1.

Можно интерпретировать статью [1] так, что в любой момент процесс должен быть в состоянии пережить сбой. Как это обрабатывается? Есть ли гарантии, что какие-либо методы будут вызваны, если процесс будет уничтожен таким образом? Статья * не упоминает об этом.

Мой вопрос: как вы можете гарантировать, что процесс принудительного уничтожения возобновится каким-то вменяемым образом при следующем запуске? Единственное состояние, в котором находится мой процесс (при условии, что не гарантированы вызовы методов при остановке процесса), это состояние в постоянном хранилище (в БД или в другом месте), и оно может быть неполным, если процесс принудительно завершен.

Конкретный пример: допустим, я прошу службу выполнить какую-то работу. Эта работа не похожа на воспроизведение музыкального файла. Это работа, которую можно считать «выполненной» в какой-то момент (например, отправка данных в Интернет). Если мой Сервис будет убит, скажем, после 50% работы, как мое приложение узнает, если работа была успешной? У меня может быть флаг в постоянном хранилище, говорящий «выполнено», но даже тогда Android может убить мой Сервис после того, как я отправлю последний байт и до того, как я установлю флаг.

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

[Редактировать 1 начало]

Мне известен следующий текст [1], но это не решает проблему для сервисов: «Это последнее состояние генерируется каждый раз, когда пользователь покидает эту часть приложения, а не когда его убивают»

[Изменить 1 конец]

[Изменить 2 начало]

Я нашел что-то действительно интересное. Очевидное несоответствие в документации Android, связанной с этим. Пожалуйста, смотрите мой новый вопрос на2

[Изменить 2 конец]

[Изменить 3 начала]

«Очевидное несоответствие» было решено. Это было из-за того, что я не был точен в терминах "приложение" / "процесс" / "активность". Этот вопрос все еще стоит, хотя.

[Изменить 3 конец]

Ответы на вопрос(1)

Ваш ответ на вопрос