5
6

More than 1 year has passed since last update.

RecyclerViewでAdapterにnullを入れた方がいい話

Posted at

初めに

今回は、RecyclerView実装時にレビューをいただいて指摘された内容に疑問が残っていたので調べたものをまとめていこうと思います。

本文

自分が頂いたレビューはRecyclerViewのAdapterにonDestroyViewでnullを入れてあげてと言った内容でした。
ではなぜ、そうする必要があるのかですが、Activityよりも長生きしてしまう可能性があるからです。
そうするとメモリーリークが発生してしまいます。
明示的にnullを入れてあげる事でメモリが解放されメモリリークの発生を防ぐことができます。
Adapter#onAttachedToRecyclerView(RecyclerView)
Adapter#onDetachedFromRecyclerView(RecyclerView)
Adapter#onViewAttachedToWindow(ViewHolder)
Adapter#onViewDetachedFromWindow(ViewHolder)
Adapterには上記4つのコールバッグがあり、onViewDetachedFromWindowが呼ばれないため、解放作業がされません。
onViewAttachedToWindowとペアになっているため、onViewDetachedFromWindowが呼ばれていないとonViewAttachedToWindowを再度呼び出したときにメモリの確保が先にされてしまっているため、メモリリークが起こります

最後に

自分がレビューで指摘されたときになんでだろうと思い調べたものをまとめさせていただきました
何かのお役に立てれば幸いです

5
6
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
5
6