Skip to content

RecyclerView卡頓的大招优化 #7

Open
@JuneLeo

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

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