Gérer la reprise d’une application

API importantes

Découvrez à quel endroit vous devez actualiser votre interface utilisateur lorsque le système reprend l’exécution de votre application. L’exemple présenté dans cette rubrique enregistre un gestionnaire d’événements pour l’événement Resuming.

Enregistrer le gestionnaire d’événement de reprise

Enregistrez-vous pour gérer l’événement Resuming, qui indique que l’utilisateur revient vers votre application après s’en être éloigné.

partial class MainPage
{
   public MainPage()
   {
      InitializeComponent();
      Application.Current.Resuming += new EventHandler<Object>(App_Resuming);
   }
}
Public NonInheritable Class MainPage

   Public Sub New()
      InitializeComponent()
      AddHandler Application.Current.Resuming, AddressOf App_Resuming
   End Sub

End Class
MainPage::MainPage()
{
    InitializeComponent();
    Windows::UI::Xaml::Application::Current().Resuming({ this, &MainPage::App_Resuming });
}
MainPage::MainPage()
{
    InitializeComponent();
    Application::Current->Resuming +=
        ref new EventHandler<Platform::Object^>(this, &MainPage::App_Resuming);
}

Actualiser le contenu affiché et récupérer les ressources

Le système suspend votre application quelques secondes après que l’utilisateur bascule vers une autre application ou vers le Bureau. Le système en reprend l’exécution lorsque l’utilisateur revient à votre application. Dès lors, le contenu de vos variables et structures de données restent identiques à ce qu’elles étaient avant que le système ne suspende l’application. Le système restaure l’application là où elle s’était arrêtée. Pour l’utilisateur, c’est comme si l’application était exécutée en arrière-plan.

Lorsque votre application gère l’événement Reprise , votre application a peut-être été suspendue pendant des heures ou des jours. Elle doit alors actualiser le contenu ayant pu devenir obsolète pendant l’interruption de l’application, tel que les flux d’actualités ou l’emplacement de l’utilisateur.

C’est également le moment idéal pour restaurer toutes les ressources exclusives libérées lors de la suspension de votre application, telles que les descripteurs de fichiers, les appareils photo, les périphériques d’E/S, les périphériques externes et les ressources réseau.

partial class MainPage
{
    private void App_Resuming(Object sender, Object e)
    {
        // TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
    }
}
Public NonInheritable Class MainPage

    Private Sub App_Resuming(sender As Object, e As Object)
 
        ' TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.

    End Sub
>
End Class
void MainPage::App_Resuming(
    Windows::Foundation::IInspectable const& /* sender */,
    Windows::Foundation::IInspectable const& /* e */)
{
    // TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
}
void MainPage::App_Resuming(Object^ sender, Object^ e)
{
    // TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
}

Notes

Étant donné que l’événement Reprise n’est pas déclenché à partir du thread d’interface utilisateur, un répartiteur doit être utilisé dans votre gestionnaire pour distribuer les appels à votre interface utilisateur.

Remarques

Une application jointe au débogueur Visual Studio ne sera pas suspendue. Toutefois, vous pouvez la suspendre à partir du débogueur et lui envoyer un événement Resume afin de déboguer votre code. Assurez-vous que la barre d’outils Emplacement de débogage est visible et cliquez sur la liste déroulante à côté de l’icône Suspendre. Ensuite, sélectionnez Reprendre.

Pour Windows Phone applications du Windows Store, l’événement Reprise est toujours suivi par OnLaunched, même lorsque votre application est actuellement suspendue et que l’utilisateur relance votre application à partir d’une vignette principale ou d’une liste d’applications. Les applications peuvent ignorer l’initialisation si un contenu est déjà défini sur la fenêtre active. Vous pouvez vérifier la propriété LaunchActivatedEventArgs.TileId pour déterminer si l’application a été lancée à partir d’une vignette principale ou secondaire et, en fonction de l’information obtenue, décider si vous devez présenter une expérience de nouvelle exécution ou de reprise d’exécution de l’application.