アプリの再開の処理

重要な API

システムがアプリを再開するときに UI を更新する場所について説明します。 このトピックの例では、 Resuming イベントのイベント ハンドラーを登録します。

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

表示されたコンテンツを更新し、リソースを再取得する

システムは、ユーザーが別のアプリまたはデスクトップに切り替えた数秒後にアプリを中断します。 ユーザーがアプリに切り替えると、システムによってアプリが再開されます。 システムがアプリを再開すると、変数とデータ構造の内容は、システムがアプリを中断する前と同じです。 システムは、中断したアプリを復元します。 ユーザーには、アプリがバックグラウンドで実行されているかのように表示されます。

アプリが Resuming イベントを処理すると、アプリが何時間も何日も中断されている可能性があります。 アプリが中断されている間に古くなった可能性のあるコンテンツ (ニュース フィードやユーザーの場所など) を更新する必要があります。

また、ファイル ハンドル、カメラ、I/O デバイス、外部デバイス、ネットワーク リソースなど、アプリが中断されたときにリリースした排他的リソースを復元する場合にも適しています。

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

Note

Resuming イベントは UI とは異なるスレッドで発生するため、UI への呼び出しをディスパッチするために、ハンドラー内でディスパッチャーを使う必要があります。

解説

アプリが Visual Studio デバッガーにアタッチされている場合、アプリは中断されません。 ただし、デバッガーから中断し、コードをデバッグできるように Resume イベントを送信できます。 Debug Location ツール バーが表示されていることを確認し、Suspend アイコンの横にあるドロップダウンをクリックします。 次に、 Resume を選択します。

Windows Phone ストア アプリの場合、 Resuming イベントの後には常に OnLaunched が続きます。アプリが現在一時停止されていて、ユーザーがプライマリ タイルまたはアプリの一覧からアプリを再起動した場合でもです。 現在のウィンドウに既にコンテンツ セットがある場合、アプリは初期化をスキップできます。 LaunchActivatedEventArgs.TileId プロパティを確認して、アプリがプライマリ タイルまたはセカンダリ タイルから起動されたかどうかを判断し、その情報に基づいて、新しいアプリ エクスペリエンスを表示するか再開するかを決定できます。