Java 我可以限制recyclerview中每个触摸事件的onScrolled()方法调用数吗?

Java 我可以限制recyclerview中每个触摸事件的onScrolled()方法调用数吗?,java,android,Java,Android,如何限制在RecyclerView中调用和运行OnScrolled()方法的次数??因为其中有许多条件,执行这段代码会导致应用程序速度减慢 条件: if (dy < 0 && mLinearLayoutManager.findFirstCompletelyVisibleItemPosition() >= 10 && !mStateScrollTop) { YoYo.with(Techniques.SlideInUp)

如何限制在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;
            }
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()中到底在做什么?
?在项目中显示图标的条件