Java 我可以限制recyclerview中每个触摸事件的onScrolled()方法调用数吗?
如何限制在RecyclerView中调用和运行OnScrolled()方法的次数??因为其中有许多条件,执行这段代码会导致应用程序速度减慢 条件:Java 我可以限制recyclerview中每个触摸事件的onScrolled()方法调用数吗?,java,android,Java,Android,如何限制在RecyclerView中调用和运行OnScrolled()方法的次数??因为其中有许多条件,执行这段代码会导致应用程序速度减慢 条件: if (dy < 0 && mLinearLayoutManager.findFirstCompletelyVisibleItemPosition() >= 10 && !mStateScrollTop) { YoYo.with(Techniques.SlideInUp)
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;
}
if(dy<0&&mLinearLayoutManager.findFirstCompletelyVisibleItemPosition()>=10&&!mStateScrollTop){
YoYo.with(技巧.幻灯片)
.持续时间(150)
.playOn(iv_go_to_top);
mstatescrollpop=true;
}否则如果(dy>0&&mStateScrollTop){
YoYo。使用(技巧。滑出)
.持续时间(150)
.playOn(iv_go_to_top);
mstatescrollpop=false;
}
我会这样做:
onScrolled() {
synchronized(this) {
if(!ready)
return;
else
ready = false;
}
// your current onScroll body
}
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();
}
然后启动一个线程,定期将ready
变量设置为true
。大概是这样的:
onScrolled() {
synchronized(this) {
if(!ready)
return;
else
ready = false;
}
// your current onScroll body
}
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毫秒执行一次,这将加快执行速度。很抱歉,这是一种伪代码,希望它对您有意义并且会有所帮助。您在onScrolled()中到底在做什么?
?在项目中显示图标的条件