如何限制RecyclerView中调用和运行方法OnScrolled()的次数?由于其中包含许多条件,因此非常需要执行此代码,从而导致应用程序运行缓慢。
条件:
if (dy < 0 && mLinearLayoutManager.findFirstCompletelyVisibleItemPosition() >= 10 && !mStateScrollTop) {
YoYo.with(Techniques.SlideInUp)
.duration(150)
.playOn(iv_go_to_top);
mStateScrollTop = true;
} else if (dy > 0 && mStateScrollTop) {
YoYo.with(Techniques.SlideOutDown)
.duration(150)
.playOn(iv_go_to_top);
mStateScrollTop = false;
}
答案 0 :(得分:1)
我会做这样的事情:
onScrolled() {
synchronized(this) {
if(!ready)
return;
else
ready = false;
}
// your current onScroll body
}
然后您将启动一个线程,以固定间隔将ready
变量设置为true
。像这样:
private void launchOnScrollThread() {
new Thread() {
@Override
public void run() {
// endless loop - maybe you would like to put some condition to end the loop
for(;;) {
ready = true;
Thread.sleep(100); // wait here for 100 milliseconds
}
}
}.start();
}
这将确保onScroll
中当前的代码最多每100毫秒执行一次,这将加快执行速度。抱歉,这是一种伪代码,希望它对您有意义并会有所帮助。