Android 如何检测当前视图由于滚动而不可见?
对于回收者视图,支架模式用于提高效率。Android 如何检测当前视图由于滚动而不可见?,android,android-layout,android-recyclerview,android-drawable,android-viewholder,Android,Android Layout,Android Recyclerview,Android Drawable,Android Viewholder,对于回收者视图,支架模式用于提高效率。 当我们滚动回收者列表时,视图中显示的项目被创建或重新使用。 我的问题是:如果某个项目被滚动到不可见状态,而相应的视图不可见,是否有任何方法被调用来指示这一点?例如,如果我们在视图中下载资源,并且需要在用户滚动视图时取消下载,那么这是自动完成的,还是需要在ViewHolder上执行某些方法调用或其他操作?您可以覆盖此RecyclerView方法来检查项目何时被回收 @Override public void onViewRecycled(R
当我们滚动回收者列表时,视图中显示的项目被创建或重新使用。
我的问题是:如果某个项目被滚动到不可见状态,而相应的视图不可见,是否有任何方法被调用来指示这一点?例如,如果我们在视图中下载资源,并且需要在用户滚动视图时取消下载,那么这是自动完成的,还是需要在ViewHolder上执行某些方法调用或其他操作?您可以覆盖此
RecyclerView
方法来检查项目何时被回收
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
// check if download is in progress and stop it.
}
在此适配器创建的视图被回收时调用
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
// check if download is in progress and stop it.
}
当RecyclerView.LayoutManager决定回收视图时,该视图将被回收
不再需要附加到其父RecyclerView。这可能是
因为它已失去可见性或一组缓存视图
由仍然附加到父RecyclerView的视图表示。如果
项目视图绑定了大型或昂贵的数据,例如大型
位图,这可能是释放这些资源的好地方
RecyclerView在清除ViewHolder的
内部数据并将其发送到RecycledViewPool。这边,如果
ViewHolder在被回收之前持有有效信息,您
可以调用getAdapterPosition()获取其适配器位置
还有一个
onviewsattached(ViewHolder)
方法,它在ViewHolder离开视口时被调用,但这并不意味着它将被回收,因此它不是中断异步任务的好地方。