はじめに
長いことFragmentやActivity上でonResumeやonPauseなどのライフサイクル関数をオーバーライドするというのが習慣となっていましたが、こちらが非推奨になったようです。
こちらに関して簡単にまとめたいと思います。
ライフサイクルのオーバーライドが非推奨になった
公式のベストプラクティスには、以下記載があります。
上記には強く推奨とあり、少々圧を感じますね、、、
実装的には以下のように変わる形となります。
Before
override fun onPause() {
super.onPause()
}
After
viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onPause(owner: LifecycleOwner) {
// ...
}
}
個人的にはMVVMなどのアーキテクチャの浸透もあり、上記のようなObserverを使用する形の方がすっきりとして良い印象ですが、そもそも何故非推奨となったのでしょうか?
それは以下公式の記事に回答がありそうです。
ご紹介の記事内では、位置情報を取得する処理を参考資料として記載していますが、つまりメンテナンス性やライフサイクル関数の競合が発生した際に乗せている実装によってはトラブルが起きる可能性があるという問題に対してひとつの解決策として、ライフサイクルの置き換えを推奨しているということのようです。
さいごに
こういった形で既存の機能がブラッシュアップされていくのは好印象ですね。
ComposeViewや上記LifecycleStateなど既存の実装を新しいものに置き換えて欲しいという意思をひしひしと感じるような機能が今後も増えていくはずなので、少しづつでも今のうちから対応していきたいところですね。