Android、Swift、Flutterのライフサイクルの比較表

最近、Flutterを開発しているときにライフサイクルを確認するタイミングが結構あり、iOSの場合はどうか?など気になったのでAndroid、iOS、Fliutterのライフサイクルの比較表を作成しました。

ライフサイクルの比較表

ライフサイクルAndroidiOSFlutter
アプリ起動時onCreate()application(_:didFinishLaunchingWithOptions:)main()
アクティビティ/
ビューコントローラ作成
setContentView()loadView()build()
ビューの作成onCreateView()viewDidLoad()initState()
レイアウトの適用onStart()viewWillAppear()didChangeDependencies()
ユーザーインタラクション準備onResume()viewDidAppear()didChangeAppLifecycleState()
フォアグラウンドでの表示applicationWillEnterForeground()didChangeAppLifecycleState() (resumed)
バックグラウンドに移行onPause()applicationDidEnterBackground()didChangeAppLifecycleState() (inactive)
アクティビティ/
ビューコントローラ破棄
onStop()viewWillDisappear()dispose()
ビューの破棄onDestroyView()viewDidDisappear()
アプリ終了時onDestroy()applicationWillTerminate()
Android、iOS、Flutterのライフサイクルの比較表

Flutterでは、AndroidとiOSのライフサイクルに比べて独自のライフサイクルメソッドが使用されます。

Flutterのbuild()メソッドはウィジェットツリーを構築し、initState()はウィジェットの状態の初期化を行います。

また、didChangeDependencies()メソッドはウィジェットが依存関係の変更を検知した際に呼び出されます。

さらに、didChangeAppLifecycleState()メソッドはアプリのライフサイクル状態の変化を処理するために使用されます。

Flutterの場合、AndroidやiOSのネイティブプラットフォームとは異なるアプローチを取るため、それぞれのプラットフォームの特定のメソッドやイベントとは対応していません

Flutterの開発者は、Flutterのライフサイクルメソッドを使用してアプリの状態の管理やイベントの処理を行う必要があります。

Android

onCreate()

アクティビティの作成時に呼び出されるメソッドであり、一度だけ実行されます。通常、アクティビティの初期設定やレイアウトの準備など、初期化処理を行います。

onStart()

アクティビティがユーザーに表示される直前に呼び出されるメソッドです。アクティビティがフォアグラウンドに表示される直前の準備処理や、リソースの割り当てなどを行います。

onResume()

アクティビティがフォアグラウンドに表示され、ユーザーの操作を受け付ける状態になったときに呼び出されるメソッドです。通常、アクティビティの更新や、ユーザーインタラクションの監視などを行います。

onPause()

アクティビティが一時停止され、バックグラウンドに移行する直前に呼び出されるメソッドです。通常、データの保存やリソースの解放など、一時停止に伴う処理を行います。

onStop()

アクティビティがバックグラウンドに移行し、ユーザーに表示されなくなったときに呼び出されるメソッドです。通常、リソースの解放やバックグラウンドでの処理の停止などを行います。

onDestroy()

アクティビティが破棄される直前に呼び出されるメソッドです。通常、リソースの解放やクリーンアップなど、最終的な処理を行います。

iOS

application(_:didFinishLaunchingWithOptions:)

アプリが起動し、準備が完了した直後に呼び出されるメソッドです。通常、アプリの初期設定やリソースの読み込みなどを行います。

applicationWillEnterForeground()

アプリがバックグラウンドからフォアグラウンドに移行する直前に呼び出されるメソッドです。通常、復元処理やUIの更新などを行います。

applicationDidEnterBackground()

アプリがバックグラウンドに移行した直後に呼び出されるメソッドです。通常、データの保存やリソースの解放など、バックグラウンドでの処理の準備を行います。。

viewDidLoad()

ビューコントローラがビューの階層をロードした直後に呼び出されるメソッドです。通常、ビューの初期設定やデータの読み込みなどを行います。

viewWillAppear()

ビューコントローラのビューが画面に表示される直前に呼び出されるメソッドです。通常、ビューの更新やアニメーションの開始などを行います。

viewDidAppear()

ビューコントローラのビューが画面に表示され、ユーザーの操作を受け付ける状態になったときに呼び出されるメソッドです。通常、ユーザーインタラクションの監視や外部リソースの読み込みなどを行います。

viewWillDisappear()

ビューコントローラのビューが画面から非表示になる直前に呼び出されるメソッドです。通常、ビューの保存やアニメーションの停止などを行います。

viewDidDisappear()

ビューコントローラのビューが画面から非表示になり、ユーザーから見えなくなったときに呼び出されるメソッドです。通常、リソースの解放やクリーンアップなどを行います。

Flutter

main()

Flutterアプリのエントリーポイントとなる関数であり、アプリの実行を開始します。

build()

ウィジェットのビルドを行うメソッドであり、ウィジェットツリーを構築します。このメソッドは再ビルドされる可能性があり、ウィジェットが変更されたときに呼び出されます。

initState()

ウィジェットの状態の初期化を行うメソッドです。一度だけ呼び出され、ウィジェットが最初に作成されたときに実行されます。

didChangeDependencies()

ウィジェットが依存関係の変更を検知した際に呼び出されるメソッドです。通常、ウィジェットが依存するデータやリソースの変更を処理します。

didChangeAppLifecycleState()

アプリのライフサイクル状態の変化を処理するメソッドです。アプリがフォアグラウンドやバックグラウンドに移行したときなど、特定のイベントが発生すると呼び出されます。

dispose()

ウィジェットが破棄される際に呼び出されるメソッドです。通常、リソースの解放やクリーンアップなど、最終的な処理を行います。

おわりに

最後までご覧いただきありがとうございます。

それぞれのプラットフォームで

微妙にライフサイクルが違うため、開発時は気をつける必要があります。

Androidの場合、fragmentとActivityで違ったりしますがこの表では、表現してません。

また何かありましたら共有させていただきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA