深入渲染机制对于卡顿影响,一次性解决面试与工作中的卡顿痛点

深入渲染机制对于卡顿影响,一次性解决面试与工作中的卡顿痛点,第1张

前言

卡顿一直都是在面试与工作过程中的核心痛点,作为开发者都想成为性能优化这方面的高手,因为所有app开发都离不开优化这个重要的环节,但是纵观了网上很多的相关帖子,好像并没有那一个博客是能够让人从一个完全不懂优化套路的同学,看完之后就直接能够自己上手,而往往需要东拼西凑来一点点解决问题,导致大量的时间被浪费,而且还得不到实质上的问题解决,那么本次给大家带来的就是能够解决在面试当中的核心问题Android的渲染机制,以及对于卡顿优化问题,到底该如何发现问题,定位问题,解决问题的策略方案。

在工作或者面试中是否遇到过下面的问题?

  1. 是否在面试过程中经常被问到渲染机制?而你答案往往是在讲绘制流程?
  2. 是否经常被问道VSYNC与Choreographer,而自己又讲不清楚?
  3. 是否经常在工作中出现了卡顿问题,但是自己不知从何下手去处理?
  4. 是否自己拿systrace或者其他工具分析出来之后的报告完成看不懂?
  5. ……

大多数开发者更多的还是在做业务开发,对于性能优化基本停留在"听说过"或者"简单使用工具"的阶段,其中不乏一些工作多年的 Android 工程师。

如果想要精进,不仅要知道如何利用工具做性能优化,还要对底层原理充分了解,对 Linux 底层相关知识等也要充分了解。

下面就以卡顿优化为列跟大家进行分析:

1.Android Framework绝对核心—渲染机制

有很多同学会把渲染机制与android的绘制流程当中的测量,布局,绘制这个流程联系起来,其实不然,Android的渲染机制的核心是一个VIEW从 文本数据(layout xml)转换到实例数据(View 对象)然后再转换成图像数据(由OPENGL调用GPU生成的bitmap数据)后推送给屏幕显示的过程,中间还涉及到surfacefilnger进程对于驱动的处理,具体流程大致如下图所示,

在了解完成 渲染机制后,我们能通过渲染机制原理明白卡顿的产生原理,那么在结合内存管理GC的STW现象与线程管理中的锁机制问题分析出可能会造成卡顿的核心原因,如下图所示


具体详情如有同学有兴趣的话可以参考我给出的思维导图,里面有渲染机制的全量流程的源码分析与原理说明。由于图片过大不好加载,大家可以 点击这里 进行查看!

2.卡顿优化进行?

很多小伙伴对于优化内容没有一个明确的认知,性能优化看上去非常的高大上,但其实就是“细节决定成败”的概念。需要对原理性的东西了解清楚,每一步都有什么不一样,针对每个步骤进行细致化的优化。性能优化是一种思想,而不是一套具体的 *** 作方法。

其主要的 *** 作套路遵循三个原则

  • 发现问题(核心原理) ​
  • 定位问题(原理实践) ​
  • 解决问题(原理实践)

通过原理去发现问题,然后利用工具去分析问题及快速定位问题,这里需要原理的支撑最后在分析出原理之后根据实际情况进行解决

卡顿的痛点有多时候在于大家找不到问题所在,所以前面的渲染机制的支撑就非常关键,透过渲染能够得到卡顿本质出现的问题,然后利用工具进行快速分析

还有很多同学是否也有遇到过拿到工具不知道如何去用?这里给大家提供一个思路,一般用三套工具能够你在工作中的所有问题:

1.systrace 能够快速定位事故类型
2.Choreographer能够快速监听帧率变化
3.透过Looper机制能够快速定位代码堆栈信息

利用上面这个策略基本能解决大家的常规问题,具体详情如下思维导图所示

由于高清图片大家可以大家可以 点击这里 进行查看!

作为过来人,发现很多学习者和实践者都在 Android 性能优化上面临着很多的困扰,比如:

  • 工作场景中遇到“性能优化”难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、架构思维的指引以及工具支持;

  • 能力修炼中,缺乏互联网项目这一实践环境,对“性能优化”只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实 *** 过程;

  • 职场晋升中,只管功能开发,不了解组件设计原理,缺少深入地思考与总结,无法完成高并发、高性能系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往留给有准备的人。

总之,一旦遇到性能问题,很少人能够由点及面逆向分析,最终找到瓶颈点和优化方法,可见性能优化需要对知识进行综合的掌握与灵活的运用,属于安卓知识领域的的深水区,也是衡量一个研发能力高低的标准之一。

为了能让大家更好的了解Android 性能优化相关方面的知识点,小编为大家整理了一份Android 性能优化知识点大全的PDF学习文档,里面包含了启动优化、UI渲染优化、崩溃优化、内存优化、卡顿优化、存储优化、弱网优化、耗电优化等等一些技术点的解析,需要参考学习的可以 点击这里 进行查看。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/796495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存