Partager via


Gérer la reprise d’une application

API importantes

Découvrez où actualiser votre interface utilisateur lorsque le système reprend votre application. L’exemple de cette rubrique inscrit un gestionnaire d’événements pour l’événement De reprise .

Inscrire le gestionnaire d’événements de reprise

Inscrivez-vous pour gérer l’événement De reprise , qui indique que l’utilisateur s’est éloigné de votre application, puis revenez-y.

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éacquire les ressources

Le système suspend votre application quelques secondes après que l’utilisateur passe à une autre application ou au bureau. Le système reprend votre application lorsque l’utilisateur revient à celle-ci. Lorsque le système reprend votre application, le contenu de vos variables et structures de données est identique à celui qu’ils étaient avant que le système n’interrompe l’application. Le système restaure l’application là où elle s’est arrêtée. Pour l’utilisateur, il apparaît comme si l’application s’exécute en arrière-plan.

Lorsque votre application gère l’événement de reprise , votre application a peut-être été suspendue pendant des heures ou des jours. Il doit actualiser tout contenu qui peut être obsolète pendant la suspension de l’application, par exemple les flux d’actualités ou l’emplacement de l’utilisateur.

Il est également judicieux de restaurer toutes les ressources exclusives que vous avez publiées lorsque votre application a été suspendue, comme les handles de fichiers, les caméras, les appareils d’E/S, les appareils 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.
}

Remarque

Étant donné que l’événement De 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.

Notes

Lorsque votre application est attachée au débogueur Visual Studio, elle ne sera pas suspendue. Toutefois, vous pouvez le suspendre à partir du débogueur, puis l’envoyer à un événement Resume afin de pouvoir déboguer votre code. Vérifiez que la barre d’outils Emplacement de débogage est visible et cliquez sur la liste déroulante en regard de l’icône Suspendre . Ensuite, choisissez Reprendre.

Pour les applications du Windows Phone Store, l’événement Reprise est toujours suivi par OnLaunched, même lorsque votre application est actuellement suspendue et que l’utilisateur lance à nouveau votre application à partir d’une vignette principale ou d’une liste d’applications. Les applications peuvent ignorer l’initialisation s’il existe déjà du contenu 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 primaire ou secondaire et, en fonction de ces informations, déterminez si vous devez présenter une expérience d’application fraîche ou reprise.