UWPアプリを事前起動する
![事前起動したサンプルアプリ](https://codezine.jp/static/images/article/11325/fig08.png)
事前起動された時刻と、その後でユーザーに起動された時刻が右上に表示されている
- アプリの初期化処理の一部を事前に実行しておけます
- 実際に事前起動するかどうかは、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メソッドを抜けた後でスタート画面のタイルをクリックすると、引き続き本番起動のデバッグができます。
![事前起動をデバッグするメニュー](https://codezine.jp/static/images/article/11325/fig09s.png)