Обработка возобновления работы приложения

Важные API

Узнайте, где обновить свой ИП, когда система возобновляет работу приложения. В примере этого раздела регистрируется обработчик событий для события Resuming.

Регистрация обработчика события возобновления

Выполните регистрацию для обработки события Resuming, которое сигнализирует о том, что пользователь переключился с вашего приложения на другую задачу, а затем вернулся к нему.

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

Обновление отображаемого содержимого и восстановление ресурсов

Система приостанавливает работу вашего приложения через несколько секунд после того, как пользователь переключается на другое приложение или на рабочий стол. Система возобновляет работу приложения, когда пользователь возвращается в него. Когда система возобновляет работу приложения, содержимое переменных и структур данных остается таким же, каким оно было до приостановки приложения. Система восстанавливает работу приложения с места приостановки. Для пользователя это выглядит так, как если бы приложение все это время выполнялось в фоновом режиме.

Когда приложение обрабатывает событие возобновления , возможно, приложение приостановлено на несколько часов или дней. Оно должно обновить любое содержимое, которое могло устареть, пока приложение было приостановлено, например каналы новостей или расположение пользователя.

В это же время можно восстановить все монопольные ресурсы, освобожденные на время приостановки приложения, такие как дескрипторы файлов, камеры, устройства ввода-вывода, внешние и сетевые устройства.

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

Примечание

Так как событие Resuming не возникает из потока пользовательского интерфейса, диспетчер должен использоваться в обработчике для отправки любых вызовов в пользовательский интерфейс.

Комментарии

Если приложение подключено к отладчику Visual Studio, оно не будет приостановлено. Однако его можно приостановить из отладчика, а затем отправить ему событие Resume, чтобы выполнить отладку кода. Убедитесь, что отображается панель инструментов Место отладки, и нажмите раскрывающий список рядом со значком Приостановить. Затем выберите Возобновить.

Для приложений из Магазина Windows Phone за событием Resuming всегда следует событие OnLaunched, даже если ваше приложение в данный момент приостановлено, а пользователь заново запускает приложение с основной плитки или из списка приложений. Приложения могут пропустить инициализацию, если содержимое уже задано в текущем окне. Можно проверить свойство LaunchActivatedEventArgs.TileId, чтобы определить, было ли приложение запущено с основной или вспомогательной плитки, и на основе этих данных решить, нужно ли запускать приложение заново или можно возобновить его.