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

相关推荐

  1. android流程分析总结

    2024-01-29 15:06:01       19 阅读
  2. Android imageView.setImageXXX() 引发的问题

    2024-01-29 15:06:01       31 阅读
  3. Android String.format() 引发的问题

    2024-01-29 15:06:01       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 15:06:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 15:06:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 15:06:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 15:06:01       20 阅读

热门阅读

  1. linux ping 某台服务的端口

    2024-01-29 15:06:01       27 阅读
  2. 【面试】MySQL的几种查询方式

    2024-01-29 15:06:01       37 阅读
  3. flink源码分析 - jar包中提取主类和第三方依赖

    2024-01-29 15:06:01       31 阅读
  4. iOS 闭包和Block的区别

    2024-01-29 15:06:01       42 阅读
  5. Nginx加固安全策略,简单实用

    2024-01-29 15:06:01       36 阅读