lifecycleメソッドをOverrideしないことが推奨されている件

Pocket

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 = 強い推奨ということなので今後はこう書こうと思います。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です