AndroidOfferKiller icon indicating copy to clipboard operation
AndroidOfferKiller copied to clipboard

RecyclerView卡頓的大招优化

Open JuneLeo opened this issue 4 years ago • 3 comments

RecyclerView的卡顿问题归根结底是滑动的卡顿,有一个场景是ViewHolder在滑动过程中创建ViewHolder导致的卡顿,那么问题来了,是否可以在CPU空闲的时候我们给RecyclerViewPool预制一些ViewHolder,这样在滑动过程中只会调用bind方法,而不会调用create方法。 `//需要提前缓存ViewHolder,解决滑动卡顿问题,骚操作 MessageQueue.IdleHandler idleHandler = new MessageQueue.IdleHandler() { @Override public boolean queueIdle() { new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 10; i++) { final RecyclerView.ViewHolder viewHolder = mController.getAdapter().createViewHolder(mRecyclerView, PicRecoveryBaseModel.TYPE_ITEM); mRecyclerView.post(new Runnable() { @Override public void run() { mRecyclerView.getRecycledViewPool().putRecycledView(viewHolder); } });

                }

                for (int i = 0; i < 2; i++) {
                    final RecyclerView.ViewHolder viewHolder = mController.getAdapter().createViewHolder(mRecyclerView, PicRecoveryBaseModel.TYPE_GROUP);
                    mRecyclerView.post(new Runnable() {
                        @Override
                        public void run() { 
                            mRecyclerView.getRecycledViewPool().putRecycledView(viewHolder);
                        }
                    });
                }


            }
        }).start();
        return false;
    }
};`

JuneLeo avatar Jan 17 '21 04:01 JuneLeo

太狠了 ,这招

ikkyu0319 avatar Jun 09 '21 02:06 ikkyu0319

确实挺狠的,会有什么隐患吗 另:排版看这蛋疼,看看 Markdown 语法

chinnsenn avatar Jun 18 '21 10:06 chinnsenn

可以,空间换性能。学到了

Petterpx avatar Aug 27 '21 04:08 Petterpx