Android中onViewRecycled、onDetachedFromRecyclerView和onViewDetachedFromWindow之间的区别

Android中onViewRecycled、onDetachedFromRecyclerView和onViewDetachedFromWindow之间的区别,android,android-recyclerview,Android,Android Recyclerview,我在理解官方文档中使用的术语时遇到了一些困难。具体来说,有一些方法 onViewRecycled,ondeachedfromRecyclerView和 onviewsdetachedFromWindow。这三者之间的区别是什么?即使在签名上也有显著的区别: OnDeachedFromRecyclerView(RecyclerView-RecyclerView)-当RecycleView停止观察此适配器时调用 您可能没有注意到的是,在此方法之前始终会调用一个匹配方法: onAttachedToRe

我在理解官方文档中使用的术语时遇到了一些困难。具体来说,有一些方法
onViewRecycled
ondeachedfromRecyclerView

onviewsdetachedFromWindow
。这三者之间的区别是什么?

即使在签名上也有显著的区别:

OnDeachedFromRecyclerView(RecyclerView-RecyclerView)
-当RecycleView停止观察此适配器时调用

您可能没有注意到的是,在此方法之前始终会调用一个匹配方法:

onAttachedToRecyclerView(RecyclerView RecyclerView)
-当RecyclerView开始观察此适配器时调用

调用
recyclerView.setAdapter(adapter)
时,
adapter
接收对
onAttachedToRecyclerView(recyclerView)
的调用。然后调用
recyclerView.setAdapter(null)
将触发
adapter
s
onDetachedFromRecyclerView(recyclerView)

除某些特殊情况外,通常不需要重写此方法(如保留已观察的
recyclerView
s计数等)


onViewRecycled(VH holder)
更简单,在将
viewHolder
发送到
recycleViewPool
之前调用它

您可以将其视为
onBindViewHolder(VH holder,int position)
的一种“清理”方法


onviewsattachedtowindow(VH支架)
始终遵循匹配的
onviewsattachedtowindow(VH支架)
。当viewholder变为可见或不可见时(附加或分离调用),会准确地调用它

如果
viewHolder
已分离但尚未回收,则它可能会再次收到
onViewAttachedToWindow(viewHolder)
调用,而无需使用
onBindViewHolder
重新绑定数据