UIKitt のライフサイクルについてのお勉強
アプリケーションのライフサイクルを管理
UIKit には次の実行状態がある。
https://docs-assets.developer.apple.com/published/f5ae1a0785/00b28327-17dc-4f0c-866f-29f854edfce3.png
最初は NotRunning 、実行されると Background か Inactive になり、Active 状態へと遷移する。
アプリを終了すると Active から Inactive に移り, そのまま Backgroud と Suspend を経て終了する。
これらのアプリの状態は利用可能なシステムリソースに関係する。
(例えば、Background は実行時間が制限される等)
ライフサイクルイベント
上記の実行状態が変わる際、下記のライフサイクルイベントが発生する。
Launch: Not Running から Background もしくは Inactive へ移行
Activation: Inactive から Active へ移行
Deactive: Active から Inactive へ移行
Background execution: Inactive から Background へ移行
Termination: Background から Suspend へ移行(?)
行動イベント
UIKit はライフサイクルイベント以外にも下記の重要なイベントに応答する。
Memory warnings: アプリが使用するメモリ量を減らす
Time changes: アプリの時間依存機能を更新
Protected data becomes available/unavailable: スマホのロック, アンロック時にファイルアクセス権を管理
State restoration: アプリのUIを以前の状態に戻して、実行を止めていないような外見に戻す
Handoff tasks: 別デバイスで実行されたタスクを続行する
Open URLs: アプリに送信されたURLを開く
File downloads: アプリケーションがURLSessionオブジェクトを使用してダウンロードしたファイルを受信する