【Kotlin/Android Studio】Activityのライフサイクルの種類と役割
この記事からわかること
- Android Studio/Kotlin Activityのライフサイクルとは?
- 種類と役割
- onCreate()、onStart()、onAttach、onPause()、onStop()、onDestroy()の違いと処理
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
参考文献:公式リファレンス:The activity lifecycle
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Activityとは?
ActivityとはAndroidアプリの中でユーザーインターフェースとアプリケーションのロジックを含む画面を表すコンポーネントです。アプリの中で複数のActivityを用意することも可能ですが、1アプリに1Activityにして画面をFragmentで実装していくパターンが増えてきています。
ActivityはXML構造のレイアウトファイルとKotlin(Java)で記述されたの動作を制御するファイルから構成されており、アプリケーションが起動されるとActivityも同時に生成されます。
Activityのライフサイクル
Activityには生成されたタイミングから破棄されるタイミングまでのライフサイクルを保持しています。そのライフサイクルの状態に応じたコールバックが受け取れるようにさまざまなライフサイクルコールバックメソッドが用意されています。
ライフサイクルの種類
Activityに用意されているライフサイクルコールバックメソッドは以下の6つです。
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
公式サイトより引用した以下の画像がわかりやすいかと思います。
引用:公式リファレンス:The activity lifecycle
onCreate()
システムが最初にActivityを作成したときに呼び出されるコールバックです。ライフサイクル内で1回しか呼び出されないため1回のみ実行する必要がある基本的なアプリの起動ロジックを含ませます。
パラメータsavedInstanceState
はActivityの以前に保存された状態を保持するBundle
オブジェクトです。以前にActivityが存在していなければnull
が格納されています。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
}
例えばUIの宣言(レイアウトの定義)やメンバー変数の定義、ウィジェットの操作、 ViewModelの関連付けなどです。
onStart()
Activityが開始状態になりフォアグラウンドに移動して操作可能な状態にする準備が完了すると呼び出されるコールバックです。このメソッドではUIを保持するコードをアプリが初期化しています。
また呼び出されるのは初回のみではなくアプリが一時停止し再開した際にはonStart()
からまた始まります。
onResume()
Activityが表示され操作可能な状態になった際に呼び出されるコールバックです。この状態まで来るとユーザーとの対話的なやりとりが可能になり、フォーカスがアプリから他の対象に移動する状況が発生するまでアプリはこの状態を保持します。
onPause()
Activityが一時停止し、バックグラウンドに移動する時に呼び出されるコールバックです。一部のイベントがアプリの実行に割り込んだり、マルチウィンドウモードでフォーカスが当たっていない時、新しい半透明のアクティビティ(ダイアログなど)が開く際に呼び出されます。
onPause()
の実行は非常に短時間で終了するためデータの保存やネットワーク呼び出し、データベーストランザクションの実行には使用しないことが推奨されています。
onStop()
Activityが非表示になる際に呼び出されるコールバックです。新たに開始されたアクティビティが画面全体を占有する場合などに発生します。ここではアプリがユーザーに表示されていない間に不要なリソースをアプリが解放または調整する必要があります。例えば位置情報の精度を高から低に下げるなど。
onDestroy()
Activityが破棄される際に呼び出されるコールバックです。これはアクティビティの終了(ユーザーがアクティビティを完全に閉じるか、アクティビティに対してfinish
が呼び出される)や構成の変更(デバイスの向きの変更やマルチウィンドウモードなど)に伴いアクティビティが一時的に破棄される場合に呼び出されます。
ライフサイクルの変化を検知
Fragmentのライフサイクル
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。