Gestire la ripresa dell'appHandle app resume

API importantiImportant APIs

Scopri dove aggiornare la tua interfaccia utente quando il sistema riprende l'esecuzione di un'app.Learn where to refresh your UI when the system resumes your app. L'esempio di questo argomento registra un gestore per l'evento Resuming.The example in this topic registers an event handler for the Resuming event.

Registrare il gestore dell'evento di ripresaRegister the resuming event handler

Registra il gestore per gestire l'evento Resuming, che indica che l'utente ha lasciato l'app e poi è tornato.Register to handle the Resuming event, which indicates that the user switched away from your app and then back to it.

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);
}

Aggiornare il contenuto visualizzato e acquisire di nuovo le risorseRefresh displayed content and reacquire resources

Il sistema sospende l'esecuzione dell'app per pochi secondi tutte le volte che l'utente passa a un'altra app o al desktop.The system suspends your app a few seconds after the user switches to another app or to the desktop. Il sistema riprende l'esecuzione dell'app ogni volta che l'utente vi ritorna.The system resumes your app when the user switches back to it. Quando il sistema riprende l'app, il contenuto delle variabili e delle strutture di dati è lo stesso esistente prima della sospensione dell'app.When the system resumes your app, the content of your variables and data structures are the same as they were before the system suspended the app. Il sistema riprende l'esecuzione dell'app dal punto in cui è stata lasciata.The system restores the app where it left off. L'utente ha quindi l'impressione che l'app sia rimasta in esecuzione in background.To the user, it appears as if the app has been running in the background.

Quando l'app gestisce l'evento Resuming, l'app potrebbe essere stata sospesa per ore o giorni.When your app handles the Resuming event, your app may be been suspended for hours or days. L'app deve quindi aggiornare il contenuto che potrebbe essere diventato obsoleto durante la sospensione dell'app, ad esempio newsfeed o la posizione dell'utente.It should refresh any content that might have become stale while the app was suspended, such as news feeds or the user's location.

Questo è il momento ideale per ripristinare le eventuali risorse esclusive rilasciate al momento della sospensione dell'app, come handle di file, fotocamere, dispositivi di I/O, dispositivi esterni e risorse di rete.This is also a good time to restore any exclusive resources that you released when your app was suspended such as file handles, cameras, I/O devices, external devices, and network resources.

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.
}

Nota

Poiché l'evento di ripresa non viene generato dal thread dell'interfaccia utente, è necessario usare un dispatcher nel gestore per inviare qualsiasi chiamata all'interfaccia utente.Because the Resuming event is not raised from the UI thread, a dispatcher must be used in your handler to dispatch any calls to your UI.

CommentiRemarks

Quando l'app è associata al debugger di Visual Studio, non verrà sospesa.When your app is attached to the Visual Studio debugger, it will not be suspended. Puoi comunque sospenderla dal debugger e quindi inviarle un evento Resuming in modo da poter eseguire il debug del codice.You can suspend it from the debugger, however, and then send it a Resume event so that you can debug your code. Assicurati che la barra degli strumenti Posizione di debug sia visibile e quindi fai clic sul menu a discesa accanto all'icona Sospendi.Make sure the Debug Location toolbar is visible and click the drop-down next to the Suspend icon. Scegli Riprendi.Then choose Resume.

Per le app di Windows Phone Store, l'evento di ripresa è sempre seguito da OnLaunched, anche quando l'app è attualmente sospesa e l'utente riavvia l'app da un riquadro principale o da un elenco di app.For Windows Phone Store apps, the Resuming event is always followed by OnLaunched, even when your app is currently suspended and the user re-launches your app from a primary tile or app list. Le app possono ignorare l'inizializzazione se nella finestra corrente è già presente del contenuto.Apps can skip initialization if there is already content set on the current window. È possibile controllare la proprietà LaunchActivatedEventArgs. TileId per determinare se l'app è stata avviata da un riquadro primario o secondario e, in base a tali informazioni, decidere se è necessario presentare un'esperienza di app aggiornata o ripresa.You can check the LaunchActivatedEventArgs.TileId property to determine if the app was launched from a primary or a secondary tile and, based on that information, decide whether you should present a fresh or resume app experience.