У нас есть приложение Xamarin UWP, которое необходимо выходить из системы всякий раз, когда пользователь сворачивает окно или щелкает его из окна.
В моем файле App.xaml.cs я зарегистрировал обработчик события для события Suspending. Затем я помещаю наш код выхода в этот обработчик событий следующим образом:
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.GetDeferral();
AppBackgrounded();
deferral.Complete();
}
Этот метод AppBackgounded () выглядит следующим образом:
void AppBackgrounded()
{
if (!_isInBackgroundMode)
{
_isInBackgroundMode = true;
if (UserSetPin)
{
PinPage passcodePin = new PinPage();
Navigation.PushModalAsync(New NavigationPage(passcodePin), false);
}
else
{
App.Logout(null, true, true);
}
// clears the pasteboard so data can't be copied from this app into other apps
Clipboard.Clear();
}
}
У нас также есть метод AppLeavingBackground, который мы используем для восстановить приложение, когда пользователь вернется, но приложение не вернёт sh при возврате. Вылетает только при запуске метода OnSuspended.
Этот cra sh происходит только тогда, когда
- Приложение создано для выпуска и
- Устройство находится в планшете mode
Если в режиме планшета нажать кнопку «Просмотр задач» и перейти к другому приложению, приложение UWP останавливается, пытаясь выполнить этот код. Если вы попытаетесь вернуться к приложению, оно сразу же закроется.
Я попытался сделать переход на другие страницы asyn c, и приложение затем вызовет sh, даже если его нет в планшете. Режим. Я также попытался поместить эту логику c в AppEnteredBackground, и это все еще происходит.
Это сложно отладить, поскольку это происходит только в режиме выпуска. Есть идеи?