Um einen besseren Kontext zu schaffen, hier mein Code:
Wie Sie sehen können, wird die Variable _window beibehalten.
Code: Select all
public App(IServiceProvider ServiceProvider, ILogger logger) {
_logger = logger;
_shell = ServiceProvider.GetService < AppShell > () ??
throw new Exception();
InitializeComponent();
}
protected override Window CreateWindow(IActivationState ? activationState) {
if (_window != null) {
_logger.WriteLog("CreateWindow: Window is not null");
return _window;
} else {
_logger.WriteLog("New Window");
_window = new(_shell);
}
return _window;
}
Dann habe ich eine neue App mit der gleichen Logik wie oben erstellt. Aber die neue App zeigt dieses Verhalten nicht, sobald ich die App schließe und dann wieder öffne. Es wird ständig versucht, ein neues Fenster zu erstellen.
Was habe ich übersehen? Wie kann die alte Instanz der App-Klasse nach dem Schließen der App beibehalten werden?
BEARBEITEN: Wenn der Debugger angehängt ist und ich dann die App schließe, wiederum indem ich den Task-Umschalter verwende und ihn nach oben streiche, wird das Original, das die Ansicht nach dem Schließen beibehält, nicht vom Debugger getrennt, während die neue App vom Debugger getrennt wird.
ANTWORT: Ein Hintergrunddienst wird ausgeführt, was dazu führt, dass die App nicht ausgeführt wird auch nach dem Hochklappen der App über den Aufgabenumschalter geschlossen werden.
Mobile version