Aplikacja UWP uruchomiona na pulpicie może zostać zamknięta z górnego przycisku X, ale nie ma dla niej żadnego zdarzenia. Wiadomo, że na telefonach i tabletach aplikacja powinna polegać na zdarzeniu Suspending
, niezależnie od tego, jak jest uruchamiana, a następnie aplikacja powinna polegać na ApplicationExecutionState
.UWP na pulpicie zamkniętym przez górny przycisk X - brak zdarzenia
Istnieje jednak (być może) często spotykany scenariusz: na telefonach wystarcza zdarzenie Suspending
, a jeśli zadzwoni telefon VoIP, będzie obsługiwane przez system operacyjny po zawieszeniu aplikacji. Na pulpicie oczekuje się, że użytkownik zamknie przycisk zamykania, aby całkowicie zamknąć aplikację. Jeśli więc połączenie jest w toku, należy je odwiesić, a niektóre zasoby powinny zostać zwolnione.
Skąd wiadomo, kiedy użytkownik kliknął przycisk "zamknij", jeśli (i tylko jeśli) aplikacja UWP działa na komputerze?
Zdarzenie 'VisibilityChanged' zostanie uruchomione, gdy system operacyjny również zamknie aplikację. Tak więc nie ma różnicy między zamknięciem OS a zamykaniem użytkowników. – tomab
Tak, system operacyjny może również zamknąć aplikację, ale robi to, gdy musi zwolnić zasoby, co może być rzadkim przypadkiem na komputerze. W każdym razie, jak wskazałem wcześniej - wydaje się, że nie ma jasnego sposobu na określenie, kiedy aplikacja jest zamykana przez użytkownika. –
Więc możemy * zgadnąć * aplikacja została zamknięta, jeśli otrzymamy "VisibilityChanged", po którym nastąpi zdarzenie "Suspending". Czy to nie może wystąpić naturalnie, jeśli użytkownik zminimalizuje aplikację, a później Windows zdecyduje się zawiesić naszą aplikację? Wtedy niepoprawnie * odgadlibyśmy * aplikacja się zamyka, jako że użytkownik może później ją zmaksymalizować i wznowić? – Felix