3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Android】ライフサイクルのオーバーライドが非推奨になっていた話

Posted at

はじめに

長いことFragmentやActivity上でonResumeやonPauseなどのライフサイクル関数をオーバーライドするというのが習慣となっていましたが、こちらが非推奨になったようです。
こちらに関して簡単にまとめたいと思います。

ライフサイクルのオーバーライドが非推奨になった

公式のベストプラクティスには、以下記載があります。
スクリーンショット 2022-12-04 17.07.51.png
上記には強く推奨とあり、少々圧を感じますね、、、
実装的には以下のように変わる形となります。

Before

override fun onPause() {
    super.onPause()
}

After

viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
   override fun onPause(owner: LifecycleOwner) {
       // ...
   }
}

個人的にはMVVMなどのアーキテクチャの浸透もあり、上記のようなObserverを使用する形の方がすっきりとして良い印象ですが、そもそも何故非推奨となったのでしょうか?
それは以下公式の記事に回答がありそうです。

ご紹介の記事内では、位置情報を取得する処理を参考資料として記載していますが、つまりメンテナンス性やライフサイクル関数の競合が発生した際に乗せている実装によってはトラブルが起きる可能性があるという問題に対してひとつの解決策として、ライフサイクルの置き換えを推奨しているということのようです。

さいごに

こういった形で既存の機能がブラッシュアップされていくのは好印象ですね。
ComposeViewや上記LifecycleStateなど既存の実装を新しいものに置き換えて欲しいという意思をひしひしと感じるような機能が今後も増えていくはずなので、少しづつでも今のうちから対応していきたいところですね。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?