Как получить завершающее или прекращенное событие, когда приложение UWP закрыто системой? - PullRequest
0 голосов
/ 26 октября 2018

Изменение доступа к контактам в настройках прекращает UWP приложение.

Как получить событие terminating или terminated, когда приложение закрыто системой?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Изменение доступа к контактам в настройках прекращает работу приложения UWP.

@ Питер Торр - MSFT был прав. Такое поведение является особенностью. Когда вы изменяете настройки конфиденциальности, он просто перезапускается с новыми настройками конфиденциальности. Но в настоящее время приложения UWP не могут выполнить перезапуск контроллером вне контейнера приложения, поэтому оно было прервано.

Но в этом случае приложение должно быть уведомлено или должно быть перезапущено.

Вы можете отправить ' Запрос функции ' на WPDev UserVoice .

0 голосов
/ 27 октября 2018

Подписаться UnhandledException и Suspending событие в конструкторе Приложение класс в App.xaml.cs файл

    public App()
    {
        this.InitializeComponent();
        this.Suspending += OnSuspending;
        this.UnhandledException += App_UnhandledException;
    }

Всякий раз, когда в приложении возникает исключительная ситуация, это событие вызывает

private async void App_UnhandledException(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)
    {
        // do your job

        e.Handled = true;
    }

Вы также можете установить Handled свойство исключения true, чтобы предотвратить сбой и неправильное закрытие приложения.

Всякий раз, когда выполнение вашего приложения приостанавливается, это событие вызывается

    /// <summary>
    /// Invoked when application execution is being suspended.  Application state is saved
    /// without knowing whether the application will be terminated or resumed with the contents
    /// of memory still intact.
    /// </summary>
    /// <param name="sender">The source of the suspend request.</param>
    /// <param name="e">Details about the suspend request.</param>

    private async void OnSuspending(object sender, SuspendingEventArgs e)
    {
        var deferral = e.SuspendingOperation.GetDeferral();
        //TODO: Save application state and stop any background activity

        deferral.Complete();
    }
...