RecyclerView性能优化——通过Handler.postDelay()

RecyclerView性能优化是老生常谈了。今天我想到一种简单的方法,能有效提高滑动的流畅度。

有一种经典的做法是,当RecyclerView滑动时,onBindViewHolder规避掉耗时操作,显示一些默认内容。当RecyclerView停止滑动时,调用notifyDataSetChanged,强制bind一下ViewHolder,从而显示实际内容。

这种方法的缺点是,只有RecyclerView滑动停下来了,ViewHolder才会显示真正的内容。滑动末期,速度其实已经很慢了,ViewHolder却还没显示实际内容,用户体验极差,实在急死个人。

我想到的办法是,在onBindViewHolder时,让ViewHolder显示默认内容,并将显示实际内容的方法postDelay。

当RecyclerView滚动很快时,上一次postDelay的东西会在onViewDetachedFromWindow或者onBindViewHolder时被取消掉,耗时操作永远不会被执行。

当RecyclerView滚动很慢时,postDelay里的东西会正常执行,ViewHolder会显示真正的内容。

public class MyRecyclerviewAdapter extends RecyclerView.Adapter<MyRecyclerviewAdapter.MyViewHolder> {


    public MyRecyclerviewAdapter() {

    }

    @NonNull
    @Override
    public MyRecyclerviewAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值