我在理解官方文档中使用的术语时遇到了一些麻烦。具体来说,有方法
onViewRecycled
,onDetachedFromRecyclerView
和
onViewDetachedFromWindow
。这三个之间有什么区别?
答案 0 :(得分:6)
即使在签名上也存在显着差异:
onDetachedFromRecyclerView(RecyclerView recyclerView)
-当RecyclerView停止观察此适配器时调用。
您可能没有注意到的,在此方法之前总是有一个匹配方法:
onAttachedToRecyclerView(RecyclerView recyclerView)
-RecyclerView在开始观察此适配器时调用。
当您致电recyclerView.setAdapter(adapter)
时,adapter
会接到onAttachedToRecyclerView(recyclerView)
的电话。然后,在调用recyclerView.setAdapter()
之后将触发adapter
个onDetachedFromRecyclerView(recyclerView)
。
除了某些特殊情况(例如,对观察到的recyclerView
等进行计数等)之外,通常不需要重写此方法。
onViewRecycled(VH holder)
非常简单,在将viewHolder
发送到recycleViewPool
之前被调用。
您可以将其视为onBindViewHolder(VH holder, int position)
的“清理”方法。
onViewDetachedFromWindow(VH holder)
始终跟随匹配的onViewAttachedToWindow(VH holder)
。当Viewholder变得可见或不可见(附加/分离调用)时,就会在确切的时刻调用它。
如果viewHolder
已分离但尚未回收,则有可能再次收到onViewAttachedToWindow(ViewHolder)
呼叫,而无需与onBindViewHolder
重新绑定数据。