Мне нужно, чтобы мое приложение для Android сохраняло его состояние на диске, когда его активность переводится в фоновый режим или отключается. Было предложено запустить поток при вызове onPause () и выполнить там любые дорогостоящие процедуры ввода-вывода (см. Быстрое и надежное сохранение / загрузка состояния документа для редактора изображений ).
В каких ситуациях ОС прерывает поток и как часто они возникают?
Я предполагаю, что это будет похоже на то, как обрабатываются действия, когда ОС может произвольно решить уничтожить поток, но в основном это будет делать только тогда, когда ресурсы крайне ограничены. Хотя было бы неплохо найти какую-то конкретную документацию по этому вопросу.
После игры с некоторым тестовым кодом фоновый поток, запущенный в onPause (), будет бесконечно работать в фоновом режиме на моем устройстве (я пытался загрузить много приложений и не смог его убить).
Для моего конкретного приложения я пишу растровый редактор, в котором я использую шаблон Command и шаблон Memento, чтобы разрешить отмену и повтор правок. Я бы хотел, чтобы пользователь мог отменить / повторить свои правки, например, пользователь получает телефонный звонок, и действие прекращается, когда оно помещается в фоновом режиме. Лучшее решение, которое я могу придумать, - это использовать фоновый поток для постоянного сохранения объектов моей команды и сувенира на диске во время использования приложения, а также для завершения сохранения любых объектов, оставленных в фоновом потоке, если вызывается onPause. В худшем случае, если поток будет убит, я потеряю только некоторые правки.