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