Восстанови запрос, а не весь экран
SavedStateHandle как минимальный источник состояния ввода
Напиши ViewModel, которая хранит query в SavedStateHandle и публикует StateFlow. Новый экземпляр должен использовать значение из переданного handle, если оно есть; иначе пустую строку. updateQuery обновляет и handle, и наблюдаемое значение через один источник состояния.
Не сохраняй результаты поиска или Activity. Зависимости: AndroidX Lifecycle ViewModel/SavedState и kotlinx.coroutines; getStateFlow доступен с Lifecycle 2.5.0.
Проверки: пустой handle; handle с query = "compose"; вызов updateQuery("kmp"); создание другого экземпляра с восстановленным query. Последняя проверка моделирует контракт handle, но не заменяет тест смерти процесса на устройстве.
Основа: draft/viewmodel.md, draft/activity.md.
Сохранённый код превышает предел редактора. Скачай его перед сбросом; исходная запись сохранена.
handle содержит исходное значение и является точкой записи; второй независимый MutableStateFlow создавал бы возможность рассинхронизации. getStateFlow наблюдает обновления соответствующего ключа. SavedStateHandle.
Системное восстановление зависит от сохранённой задачи и lifecycle-снимка. Это не долговременное хранилище после явного удаления задачи. Загрузка результатов должна зависеть от восстановленного query в отдельном слое. Android-пример разобран статически, но не запускался.