Android 基础技术——列表卡顿问题如何分析解决

笔者希望做一个系列,整理 Android 基础技术,本章是关于列表卡顿问题如何分析解决

onBindViewHolder 优化

是否有耗时操作、重复创建对象、设置监听器、findViewByID、局部的动画对象等操作

是否存在内存泄漏

发生内存泄露,会导致一些不再使用到的对象没有及时释放,这些对象占用了宝贵的内存空间,很容易导致后续需要分配内存的时候,内存空间不足而出现OOM(内存溢出)。 无用对象占据的内存空间越多,那么可用的空闲空间也就越少,GC就会更容易被触发,GC进行时会停止其他线程的工作,因此有可能会造成界面卡顿等情况。

列表滑动图片加载优化

滑动过程中图片不加载、列表滑动停止才加载

      if (newState == RecyclerView.SCROLL_STATE_IDLE) {
          Glide.with(this).resumeRequests();
        } else {
          Glide.with(this).pauseRequests();
        }

是否存在过度绘制、布局是否过于复杂

查看是否有不必要的背景设置

为什么开启了硬件加速会不卡顿

是否开启了硬件加速

硬件加速利用了设备的GPU来执行绘制操作,相比于软件绘制,它具有更高的性能和效率。开启硬件加速后,列表滑动时绘制操作就会交由GPU来处理,减少了CPU的负担,从而提升了滑动的流畅性,避免了卡顿现象的发生。硬件加速能够更快地完成绘制操作,并且能够更好地应对复杂布局和过度绘制等问题,提供更好的用户体验。

分析工具方法

Debug.startMethodTracing和 Debug.stopMethodTracing TraceView 能抓到当前方法以及当前方法的所有递归子方法耗时

Android Profile CPU Java/Kotlin Method Sample

Android 基础技术——列表卡顿问题如何分析解决_第1张图片

你可能感兴趣的:(Android,基础技术,android)