初めに
今回は、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を再度呼び出したときにメモリの確保が先にされてしまっているため、メモリリークが起こります
最後に
自分がレビューで指摘されたときになんでだろうと思い調べたものをまとめさせていただきました
何かのお役に立てれば幸いです