MainWindowRecovery

internal class MainWindowRecovery

Buduje główne okno od nowa po wyjątku, który dotarł do handlera okna Compose.

Domyślny handler pokazuje komunikat i zamyka okno, a z nim całą aplikację. Samo połknięcie wyjątku nie wystarcza: porażka korutyny z kompozycji anuluje po drodze Recomposer okna i zostaje okno, które już się nie przerysuje. Dlatego okno powstaje od nowa przez zmianę generation w key. Stan aplikacji to przeżywa, bo żyje poza kompozycją: stosy ekranów w AppRouter, formularze w swoich handlerach. Ginie tylko stan z remember, np. przewinięcie listy.

Okno, które pada zaraz po zbudowaniu, padałoby w kółko. Wtedy przed odbudową zdejmowany jest ekran ze szczytu aktywnej zakładki, bo to on najpewniej rzuca przy kompozycji. Gdy zostaje sam ekran główny zakładki, sprawę przejmuje domyślny handler i aplikacja się zamyka.

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
private object Companion

Properties

Link copied to clipboard
Link copied to clipboard
private var closing: Boolean
Link copied to clipboard

Numer bieżącego okna. Jego zmiana w key buduje okno od nowa.

Functions

Link copied to clipboard
fun exceptionHandlerFactory(): WindowExceptionHandlerFactory

Fabryka handlera dla okna bieżącej generacji. Compose tworzy handler na nowo przy każdej aktualizacji okna, dlatego stan odbudowy trzyma ta klasa, a nie handler.

Link copied to clipboard
private fun onWindowFailure(windowGeneration: Int, window: Window, error: Throwable)