Чтобы лучше понять контекст, вот мой код:
Как видите, переменная _window сохраняется.
Код: Выделить всё
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;
}
Затем я создал новое приложение с той же логикой, что и выше. Но новое приложение не ведет себя так, как только я закрываю его, а затем снова открываю. Он всегда пытается создать новое окно.
Что мне не хватает? Как можно сохранить старый экземпляр класса App после закрытия приложения?
РЕДАКТИРОВАТЬ: когда отладчик подключен, а затем я закрываю приложение, снова используя переключатель задач и поднимая его, исходный вариант, тот, который сохраняет вид после закрытия, не отделяется от отладчика, в то время как новое приложение отключается от отладчика.
ОТВЕТ: работает фоновая служба, и это приводит к тому, что приложение не закрывается даже после открытия приложения из переключателя задач.
Подробнее здесь: https://stackoverflow.com/questions/798 ... dow-in-mau
Мобильная версия