天天看点

GridView 加载图片界面卡顿问题

gridView.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE){

                    // 因为尽管我们进行的是异步加载,
                    // 但如果用户频繁的上下滑动,这会在一瞬间产生上百个异步任务
                    // 这些虽然是异步操作,但由于数量多还是会给线程池带来压力,造成线程池的拥堵,
                    // 并随即带来大量的UI 更新操作,造成卡顿,关键是由于上下频繁操作的场景,这些UI 操作大部分是没有意义的
                    // 所以考虑在列表滑动的时候,不去加载图片,列表停下来,再去加载图片
                    // 列表停下来再去加载图片,仍然可以获得良好的用户体验。
                    isViewIdle = true;
                    mAdapter.notifyDataSetChanged();// 闲置下来,就是不滑动
                }
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                isViewIdle = false;
            }
        });