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

pri*_*cks 7 android recycler-adapter android-recyclerview

我在理解官方文档使用的术语时遇到了一些麻烦.具体来说,有方法 onViewRecycled,onDetachedFromRecyclerViewonViewDetachedFromWindow.这三者有什么区别?

Paw*_*wel 21

即使在他们的签名中也存在显着差异:

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

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

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

当你打电话recyclerView.setAdapter(adapter),adapter接到电话onAttachedToRecyclerView(recyclerView).然后跟随调用recyclerView.setAdapter()将触发adapters onDetachedFromRecyclerView(recyclerView).

除了某些特殊情况(例如保持观察到recyclerView的数量等)之外,您通常不需要覆盖此方法.


onViewRecycled(VH holder)要简单得多,它在发送之前被称为viewHolderrecycleViewPool.

您可以将其视为"清理"方法onBindViewHolder(VH holder, int position).


onViewDetachedFromWindow(VH holder)总是跟着匹配onViewAttachedToWindow(VH holder).当视图持有者变得可见或不可见(附加/分离调用)时,就会调用它.

如果a viewHolder已分离但尚未回收,则可以onViewAttachedToWindow(ViewHolder)再次接收呼叫而无需重新绑定数据onBindViewHolder.