UWPアプリを事前起動する
事前起動された時刻と、その後でユーザーに起動された時刻が右上に表示されている
- アプリの初期化処理の一部を事前に実行しておけます
- 実際に事前起動するかどうかは、Windowsがシステムリソースの空きを見て決定します
- Windows 10 version 1607(build 14393)から利用可能
事前起動によって、UWPアプリの起動が高速化されます。事前起動は、最初にWindows 10 version 1511で搭載されました。そのときは、全てのUWPアプリが事前起動の対象でした。Windows 10 version 1607からは、要求したアプリだけが事前起動の対象に変わりました。
事前起動されたアプリは、すぐに中断状態にされます。事前起動時はバックグラウンドで処理されるため、画面を表示することはできません。事前起動時には、フレームの作成と短時間で終わる初期化処理を行えます。事前起動されたアプリは、ユーザーがスタート画面のタイルをクリックするなどしたときにリジュームされ、再びOnLaunchedメソッド(Appクラス)が呼び出されます。
事前起動を要求する
事前起動を要求するには、CoreApplicationクラス(Windows.ApplicationModel.Core名前空間)のEnablePrelaunch静的メソッドを呼び出します。呼び出す場所はどこでもよいのですが、次のコードのようにするとよいでしょう。OnLaunchedメソッドに渡される引数のPrelaunchActivatedプロパティで、事前起動かどうかを判定できます。
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
// 次の行は事前起動時にも本番起動時にも実行される
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
// ここは事前起動時に実行される
// (その後の本番起動時にはrootFrameが存在するので、実行されない)
rootFrame = new Frame();
Window.Current.Content = rootFrame;
// そのほか、事前起動時に実行したい処理があればここで
}
if (e.PrelaunchActivated == false)
{
// ここは本番起動のときだけ実行される
// 事前起動を要求する
CoreApplication.EnablePrelaunch(true);
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
}
事前起動をデバッグする
事前起動をデバッグするには、Visual Studio 2017ではメニューの[デバッグ]-[その他のデバッグ ターゲット]-[ユニバーサル Windows アプリ事前起動のデバッグ]を使います(次の画像)。
このメニューを選ぶとデバッグ実行が始まり、PrelaunchActivatedプロパティがtrueの状態でOnLaunchedメソッドが呼び出されます。デバッグ実行を進めて、OnLaunchedメソッドを抜けた後でスタート画面のタイルをクリックすると、引き続き本番起動のデバッグができます。
