Есть ли способ программно перезапустить Activity, сохранив его ViewModel (как если бы это было изменение конфигурации системы)?
У нас есть устройство Android, которое помимо встроенного дисплея поддерживает внешние USB-дисплеи, поэтому пользователь может подключить сенсорный USB-экран.
Когда это произойдет, нам нужно будет переместить пользовательский интерфейс приложения на этот вновь подключенный дисплей.
Согласно документации, есть способ сделать это, запустив действие через и указав целевой идентификатор дисплея:
startActivity(
Intent(),
ActivityOptions.makeBasic()
.setLaunchDisplayId(displayId)
.toBundle()
)
finish()
И это действительно работает. Но есть и обратная сторона: в отличие от изменения конфигурации, файл теряется, что нарушает поток пользователей.
Есть ли способ (возможно, создать такойIntent
), чтобы он перезапустилActivity
, но сохранилViewModel
аналогично, как система это делает для изменения конфига системы?