Xamarin.iOS のアプリケーション ライフサイクル デモ
この記事とサンプル コードは、iOS の 4 つのアプリケーション状態に加え、状態がいつ変更されたかをアプリケーションに通知する AppDelegate
メソッドの役割を示しています。 アプリケーションは、アプリの状態が変わるたびに、コンソールに更新を出力します。
チュートリアル
LifecycleDemo ソリューションの Lifecycle プロジェクトを開きます。
AppDelegate
クラスを開きます。 アプリケーションの状態がいつ変更されたのかを示すため、ログがライフサイクル メソッドに追加されています。public override void OnActivated(UIApplication application) { Console.WriteLine("OnActivated called, App is active."); } public override void WillEnterForeground(UIApplication application) { Console.WriteLine("App will enter foreground"); } public override void OnResignActivation(UIApplication application) { Console.WriteLine("OnResignActivation called, App moving to inactive state."); } public override void DidEnterBackground(UIApplication application) { Console.WriteLine("App entering background state."); } // not guaranteed that this will run public override void WillTerminate(UIApplication application) { Console.WriteLine("App is terminating."); }
シミュレーターまたはデバイスでアプリケーションを起動します。 アプリが起動すると、
OnActivated
が呼び出されます。 アプリケーションは "アクティブ" 状態になっています。シミュレーターまたはデバイスの [ホーム] ボタンを選んで、アプリケーションをバックグラウンドにします。 アプリが
Active
からInactive
に、さらにBackgrounded
状態へと遷移すると、OnResignActivation
とDidEnterBackground
が呼び出されます。 バックグラウンドで実行するように設定されているアプリケーション コードはないため、アプリケーションはメモリ内で "一時停止している" ものと見なされます。アプリに戻り、フォアグラウンドに戻します。
WillEnterForeground
とOnActivated
の両方が呼び出されます。アプリケーションがバックグラウンドからフォアグラウンドに移行し、画面に表示されるテキストを変更すると、ビュー コントローラーの次のコード行が実行されます。
UIApplication.Notifications.ObserveWillEnterForeground ((sender, args) => { label.Text = "Welcome back!"; });
[ホーム] ボタンを押して、アプリケーションをバックグラウンドにします。 次に、[ホーム] ボタンをダブルタップして、アプリケーション スイッチャーを起動します。 iPhone X で、画面の下から上にスワイプします。
アプリ スイッチャーでアプリケーションを見つけ、上にスワイプして削除します (iOS 11 では、隅に赤いアイコンが表示されるまで長押しします)。
iOS はアプリケーションを終了します。 アプリケーションは既にバックグラウンドで "一時停止" されているため、WillTerminate
は呼び出されないことに注意してください。