【Kotlin/Android】LifecycleObserverの使い方!ライフサイクルに処理を依存させる

この記事からわかること
- Android Studio/KotlinのLifecycleObserverの使い方
- ライフサイクルに特定の処理を依存させる方法
- onCreate()、onStart()、onAttach、onPause()、onStop()、onDestroy()の違いと処理
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
LifecycleObserver
KotlinのLifecycleObserver
はLifecycleOwner(ActivityやFragmentなど)のライフサイクルの変化を観測し任意の処理を実行させることができるインターフェイスです。LifecycleObserver
インターフェースを直接使用するのではなく継承したサブクラスであるDefaultLifecycleObserver
またはLifecycleEventObserver
を継承したサブクラスを作成して使用します。
LifecycleObserver
で観測対象にできるライフサイクルはonStart
からonDestroy
までになります。

引用:公式リファレンス:The activity lifecycle
DefaultLifecycleObserver
- DefaultLifecycleObserverを継承したサブクラスを作成
- lifecycle.addObserverで追加する
ライフサイクルの変化を検知して任意の処理を実行するにはDefaultLifecycleObserver
を継承してサブクラスを定義します。継承すると各ライフサイクルメソッドをoverrideできるのでその中に任意の処理を記述します。
Activityのライフサイクルを観測する
Activity
のライフサイクルを観測するにはonCreate
の中でlifecycle
にaddObserver
メソッドを使用してクラスを渡します。
これで実装は完了であとはActivity
のライフサイクルが変化するたびにMyLifecycleObserver
の各メソッドの処理が呼ばれるようになります。
Fragmentのライフサイクルを観測する
Fragment
のライフサイクルを観測するにはActivity
の時と同じようにonCreate
の中でlifecycle
にaddObserver
メソッドを使用してクラスを渡します。
onViewCreated
の中でviewLifecycleOwner.lifecycle.addObserver
で追加しても正常に動作しました。
LifecycleEventObserver
LifecycleEventObserver
でも同じようにライフサイクルイベントの変化を検知して任意の処理を実行することができます。DefaultLifecycleObserver
では各ライフサイクルメソッドと同名のメソッドをoverrideすることで処理を実装していましたが、LifecycleEventObserver
はonState Change
メソッド1つをoverrideしてその中でイベントを識別して処理を分岐します。
Activity
やFragment
への適応方法は同じです。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。