Tratar a retomada do app

APIs importantes

Saiba onde atualizar sua interface do usuário quando o sistema retomar seu aplicativo. O exemplo neste tópico registra um manipulador de eventos para o evento Resuming .

Registrar o manipulador de eventos de retomada

Registre-se para manipular o evento Resuming , que indica que o usuário saiu do seu aplicativo e voltou para ele.

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

Atualizar o conteúdo exibido e readquirir recursos

O sistema suspende seu aplicativo alguns segundos depois que o usuário alterna para outro aplicativo ou para a área de trabalho. O sistema retoma seu aplicativo quando o usuário volta para ele. Quando o sistema retoma seu aplicativo, o conteúdo de suas variáveis e estruturas de dados é o mesmo que era antes de o sistema suspender o aplicativo. O sistema restaura o aplicativo de onde parou. Para o usuário, parece que o aplicativo está sendo executado em segundo plano.

Quando seu aplicativo manipula o evento Resuming , seu aplicativo pode ter sido suspenso por horas ou dias. Ele deve atualizar qualquer conteúdo que possa ter ficado obsoleto enquanto o aplicativo estava suspenso, como feeds de notícias ou a localização do usuário.

Esse também é um bom momento para restaurar todos os recursos exclusivos que você liberou quando seu aplicativo foi suspenso, como identificadores de arquivo, câmeras, dispositivos de E/S, dispositivos externos e recursos de rede.

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

Observação

Como o evento Resuming não é gerado do thread da interface do usuário, um dispatcher deve ser usado em seu manipulador para despachar todas as chamadas para sua interface do usuário.

Comentários

Quando seu aplicativo estiver anexado ao depurador do Visual Studio, ele não será suspenso. No entanto, você pode suspendê-lo do depurador e, em seguida, enviar um evento Resume para que você possa depurar seu código. Verifique se a barra de ferramentas Local de Depuração está visível e clique no menu suspenso ao lado do ícone Suspender . Em seguida, escolha Resume.

Para aplicativos da Loja do Windows Phone, o evento Resuming é sempre seguido por OnLaunched, mesmo quando seu aplicativo está suspenso no momento e o usuário reinicia seu aplicativo de um bloco primário ou lista de aplicativos. Os aplicativos podem ignorar a inicialização se já houver conteúdo definido na janela atual. Você pode verificar a propriedade LaunchActivatedEventArgs.TileId para determinar se o aplicativo foi iniciado de um bloco primário ou secundário e, com base nessas informações, decidir se deve apresentar uma experiência de aplicativo nova ou retomada.