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

时间:2019-06-20 10:47:00

标签: java android

如何限制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;
            }

1 个答案:

答案 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毫秒执行一次,这将加快执行速度。抱歉,这是一种伪代码,希望它对您有意义并会有所帮助。