2016-05-12 5 views
0

Я разрабатываю приложение в Windows Phone 10(Windows phone 10) Handle Состояние приложения

По какой-то причине я должен обрабатывать состояние приложения (перейдите на задний план, введите передний план). Я обрабатываю событие приостановить и возобновить на App.xaml.cs, но он не работает, OnSuspending и OnResuming не достигнуты. Пожалуйста, помогите мне проверить исходный код и показать, как обрабатывать эти события.

Вот мой код:

public App() 
    { 
     Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
      Microsoft.ApplicationInsights.WindowsCollectors.Metadata | 
      Microsoft.ApplicationInsights.WindowsCollectors.Session); 
     this.InitializeComponent(); 
     this.Suspending += OnSuspending; 
     Application.Current.Suspending += new SuspendingEventHandler(OnSuspending); 
     Application.Current.Resuming += new EventHandler<Object>(OnResuming); 

    } 

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


    } 
    private void OnResuming(object sender, object e) 
    { 
     // do some thing 
    } 
+0

Если вы пытаетесь отлаживать его, как правило, вы не будете стрелять эти события - вы должны будете использовать * вкладку жизненного цикла * - [см. этот вопрос] (http://stackoverflow.com/q/24103101/2681948) для получения дополнительной помощи. – Romasz

ответ

1

Вы должны использовать Жизненный цикл событий выпадающий Visual Studio 2015. Это позволяет выбирать между Приостановка, Резюме или Приостановка и Shutdown состояния.

Всякий раз, когда вы запускаете приложение в отладке, он никогда не переходит в приостановленное состояние самостоятельно.

Некоторые документ здесь: https://blogs.windows.com/buildingapps/2016/04/28/the-lifecycle-of-a-uwp-app/

0

Вы подписываетесь приостановить событие дважды

this.Suspending += OnSuspending; 
Application.Current.Suspending += new SuspendingEventHandler(OnSuspending); 

лучше оставить классический

this.Suspending += OnSuspending; 
this.Resuming += App_Resuming; 

А также таким же образом добавить возобновлением событие

private void App_Resuming(object sender, object e) 
    { 
     // TODO 
    } 

ли вы отладка приостановить/возобновить событие работает как это описано в этой статье:
How to trigger suspend, resume, and background events for Windows Store apps in Visual Studio