メモリーリークを防ぐには欠かせない Lifecycle Observer は remove/unregister 不要

スポンサーリンク

「不要」というより「自動」なので超便利。

ここでは、addObserver()の呼び出しはありますが、onDestroyのremoveObserver()の呼び出しはありません。これは意図的なものでしょうか?

LifeCycle Observer は remove/unregister 不要

👉 BoundLocationManager.java at googlecodelabs 

ライフサイクルを考慮した新しいコンポーネントの良い点は、Observer の解除や削除が不要なことです。

👉 Lifecycle Observer is not removed in step_4 · Issue #5 · googlecodelabs/android-lifecycles 


// no need to unsubscribe/remove observers
lifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
  override fun onDestroy(owner: LifecycleOwner) {
    container.removeAllViews()
  }
})

拡張関数などでも便利に使えそうです。

👉 LeakCanary