Skip to content

RecyclerView卡頓的大招优化 #7

Description

@JuneLeo

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;
    }
};`

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions