Gestire la ripresa dell'app
API importanti
Informazioni su dove aggiornare l'interfaccia utente quando il sistema riprende l'app. Nell'esempio di questo argomento viene registrato un gestore eventi per l'evento Resuming.
Registrare il gestore di ripresa eventi
Registrare per gestire l'evento Ripresa, che indica che l'utente si è allontanato dall'app e poi è tornato.
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 riacquisire le risorse
Il sistema sospende l'app alcuni secondi dopo che l'utente passa a un'altra app o al desktop. Il sistema riprende l'app quando l'utente torna ad essa. Quando il sistema riprende l'app, il contenuto delle variabili e delle strutture dati corrisponde a quello precedente alla sospensione dell'app da parte del sistema. Il sistema ripristina l'app nel punto in cui è stata interrotta. L'utente visualizza come se l'app fosse in esecuzione in background.
Quando l'app gestisce l'evento Ripresa, l'app potrebbe essere stata sospesa per ore o giorni. Dovrebbe aggiornare qualsiasi contenuto che potrebbe essere diventato obsoleto mentre l'app è stata sospesa, ad esempio i feed di notizie o la posizione dell'utente.
Questo è anche un buon momento per ripristinare tutte le risorse esclusive rilasciate quando l'app è stata sospesa, ad esempio handle di file, fotocamere, dispositivi I/O, dispositivi esterni e risorse di rete.
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 Ripresa non viene generato dal thread dell'interfaccia utente, è necessario usare un dispatcher nel gestore per inviare tutte le chiamate all'interfaccia utente.
Osservazioni:
Quando l'app è collegata al debugger di Visual Studio, non verrà sospesa. È tuttavia possibile sospenderla dal debugger e quindi inviarla a un evento Ripresa in modo da poter eseguire il debug del codice. Verificare che la barra degli strumenti Percorso di debug sia visibile e fare clic sull'elenco a discesa accanto all'icona Sospendi. Quindi scegliere Riprendi.
Per le app di Windows Telefono Store, l'evento Ripresa è sempre seguito da OnLaunched, anche quando l'app è attualmente sospesa e l'utente rilancia l'app da un riquadro principale o dall'elenco delle app. Le app possono ignorare l'inizializzazione se nella finestra corrente è già impostato contenuto. È possibile controllare la proprietà paunchActivatedEventArgs.TileId per determinare se l'app è stata avviata da un riquadro principale o secondario e, in base a tali informazioni, decidere se presentare un'esperienza di app aggiornata o ripresa.