так если понятно, к чему вопрос? что изменит ответ на него?
"Итак понятен" это про поинт с блоком мейн треда, но вопрос был немного в другом. Общая картина такая:
- Архитектура на фрагментах
- т.к. навигация на фрагментах, то onSaveInstanceState единственной активити вызывается только когда приложение "уходит в фон" или на "второй план", т.е. фризы юи не особо страшны.
- Зато страшны защитные механизмы системы, например фоновые сервисы которые работают дольше N сек без декларации себя как foreground - караются системой (ANR). Вопрос в том если ли что-то подобное, при блокировке треда в методе onSaveInstanceState.
- Небольшие объемы данных залетают в бд моментально (по сравнению с таймаутом в N сек для сервисов). Потому первый вопрос больше носил теоретический характер: "норм ли практика делать...". Итак понятно, что сейв в бд в 99% случаев отработает мгновенно.
- Так же вопрос оправдан наличием разных стратегий к сохранению данных:
1. Реактивно - как только данные прилетели из внешней среды или от юзера(ввод текста) - сразу сейвить (избыточная нагрузка на диск)
2. мой вариант при "уходе в фон"
3. компромисный - по "важным" действиям юзера, например пошаговый флоу регистрации, и на кнопку далее (шаг 1 -> шаг 2) сохранить часть стейта в бд.
Вариант 2 меньше всего теребит ио с диском, все хранится в RAM, работает шустро, но есть темные моменты типа блока треда "перед смертью".