В Android, как правило, рекомендуется не выполнять операции с базой данных (или, по крайней мере, сложные операции) в UI-Thread. У меня есть действие со сложной формой, и я хочу убедиться, что все данные сохраняются, когда действие выполняется в фоновом режиме (например, пользователь нажимает кнопку «Домой» или поступает телефонный звонок). В методе onPause() активности я могу запустить AsyncTask, который хранит данные в базе данных, но я никогда не могу быть уверен, что задача завершится успешно, потому что Android может убить процесс до завершения задачи, потому что активность и все приложение находятся в фоновом режиме .
Я могу сохранить синхронизацию данных в методе onPause, но тогда можно столкнуться с ANR.
Я знаю, что Android восстанавливает представления после того, как действие было уничтожено, но это работает правильно, только если идентификаторы просмотра уникальны. У меня есть много программно добавленных представлений, где я не могу гарантировать уникальность идентификатора, а использовать функцию saveInstanceState практически невозможно, потому что мне приходится сохранять очень сложные модели.
Есть ли возможность гарантировать, что данные будут сохранены до того, как андроид убьет процесс, не делая этого в UI-потоке?