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

时间:2018-06-27 18:42:29

标签: android android-recyclerview recycler-adapter

我在理解官方文档中使用的术语时遇到了一些麻烦。具体来说,有方法 onViewRecycledonDetachedFromRecyclerViewonViewDetachedFromWindow。这三个之间有什么区别?

1 个答案:

答案 0 :(得分:6)

即使在签名上也存在显着差异:

onDetachedFromRecyclerView(RecyclerView recyclerView)-当RecyclerView停止观察此适配器时调用。

您可能没有注意到的,在此方法之前总是有一个匹配方法:

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

当您致电recyclerView.setAdapter(adapter)时,adapter会接到onAttachedToRecyclerView(recyclerView)的电话。然后,在调用recyclerView.setAdapter()之后将触发adapteronDetachedFromRecyclerView(recyclerView)

除了某些特殊情况(例如,对观察到的recyclerView等进行计数等)之外,通常不需要重写此方法。


onViewRecycled(VH holder)非常简单,在将viewHolder发送到recycleViewPool之前被调用。

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


onViewDetachedFromWindow(VH holder)始终跟随匹配的onViewAttachedToWindow(VH holder)。当Viewholder变得可见或不可见(附加/分离调用)时,就会在确切的时刻调用它。

如果viewHolder已分离但尚未回收,则有可能再次收到onViewAttachedToWindow(ViewHolder)呼叫,而无需与onBindViewHolder重新绑定数据。