LifecycleメソッドをOverrideしないことが推奨されている件
こちらのページにAndroid Architectureの推奨事項が書いてあるのですが
その中の一つにLifecycleメソッドについて以下のような記述がありました。
Do not override lifecycle methods such as onResume in Activities or Fragments.
Use LifecycleObserver instead.
If the app needs to perform work when the lifecycle reaches a certain Lifecycle.State, use the repeatOnLifecycle API.
onResumeなどのLifecycleメソッドを使わずにLifecycleObserverを使うこと
つまりこう↓だったのが
class MainFragment: Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
override fun onResume() {
super.onResume()
// ...
}
override fun onPause() {
super.onPause()
// ...
}
}
こう↓なる
class MainFragment: Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
// ...
}
override fun onPause(owner: LifecycleOwner) {
// ...
}
}
}
}
この内容はStrongly recommended = 強い推奨ということなので今後はこう書こうと思います。