アプリのライフサイクル
アプリの状態が OS によって切り替えられる過程。
状態#
未起動 → 非アクティブ → アクティブ(前面)
↕
バックグラウンド → 停止 → 終了何を考えるか#
| 遷移 | やるべきこと |
|---|---|
| 起動 | 最小限の初期化。起動時間を短く |
| 非アクティブ化 | 進行中の操作を安全な状態に |
| バックグラウンド移行 | 状態を保存する。資源を解放する |
| 復帰 | 表示を更新する。古いデータを再取得 |
| 終了 | 通知されないこともある |
「終了時に保存する」は成立しない。 OS はバックグラウンドのアプリを 予告なく終了させる。 バックグラウンドに移った時点で保存しておく必要がある。
資源の扱い#
バックグラウンドでは
- CPU 時間が制限される
- メモリ不足時に真っ先に終了される
- ネットワークが切られることがある
カメラ、位置情報、音声などの資源は 明示的に手放さないと、 OS に強制終了される原因になる。
状態の復元#
利用者から見れば「アプリを閉じていない」。 再起動しても同じ画面に戻るのが期待される振る舞い。
- 画面の階層
- スクロール位置
- 入力途中の内容
これらを保存・復元する仕組みが iOS にも Android にも用意されている。
参考文献#
- Apple. Managing your app's life cycle. https://developer.apple.com/documentation/uikit/managing-your-app-s-life-cycle
- Android Developers. Understand the Activity Lifecycle. https://developer.android.com/guide/components/activities/activity-lifecycle