美文网首页
Android面试必问的性能优化,全面掌握

Android面试必问的性能优化,全面掌握

作者: 刨坑 | 来源:发表于2022-05-05 16:30 被阅读0次

    今天跟大家聊渲染,大家听到渲染机制,脑子里会想到哪些关键词?

    xml 文件、View、Activity、Canvas、Vsync、ViewRootImpl、Choreographer、WindowManagerService、SurfaceFilnger?

    这些关键词大家肯定都听说到一些,把它们全部汇总到一起,其实就是描述了一个问题:

    View 是如何渲染到 Activity 界面上的?

    有的同学觉得,这个简单呀:

    xml 通过 LayoutInflater 转化为 View,然后调用 setContentView 就显示到 Activity 上面了呀。

    真这么简单吗?

    1. setContentView 背后做了什么?
    2. 界面的显示肯定不是 app 进程控制的吧,这背后涉及到哪些跨进程操作?
    3. 显示到界面上的「View」,还是我们xml 生成的 View 吗?
    4. 渲染背后的规律是什么,为了用户可以正常的交互生成的界面,渲染是主动的还是被动的,频率是如何控制的?

    一旦被这么深入的提问,即使我告诉你答案就在那些关键词身上,你也很难将其贯穿起来。

    我们继续...

    可能有同学打断我,说:

    我了解这些有什么用?这些都是系统的一些原理,我就算了解了,还不是一顿写 xml 然后 setContentView,我能做什么改变吗?

    恩...

    面试要用呀。

    哈哈,有点开玩笑了,不过面试确实有可能会用到,但是并不是说,面试故意问这些原理来刁难大家,而是了解原理确实有必要

    因为掌握了原理,可以看到代码运行背后的本质,可以更好的:

    1. 遇到一些奇怪的问题,可以快速定位;
    2. 写出符合高性能的代码;
    3. 一些想要做性能优化的同学,那原理是必须掌握的,只有掌握了原理,才能够发现现有代码的问题之处,以及在原理的基础上去探索通用甚至是系统级的优化方案。

    我们重点聊一下对性能优化的帮助,那么了解渲染原理可以对什么性能优化进行辅助?

    流畅性/卡顿/ANR

    先跟大家聊一下如何做性能优化,其实性能优化并不是说「只去掌握原理去挖掘」就够了,其实性能优化简易流程是:发现问题,解决问题,监控问题防止反复。

    所以,除了原理,工具、监控都是很重要的。

    那么对于流畅性/卡顿/ANR:

    1. 善于利用工具,透过systrace高效定位卡顿问题;
    2. 想要完全看懂 systrace 的内容,原理的掌握是必不可少的;
    3. 发现了卡顿如何定位到具体代码,Looper 机制可以帮助你;
    4. 通过利用Choreographer做好帧率监控;

    上面 4 个步骤,就是初步的建立起优化的一个:发现,解决,监控的流程。

    但是想要高效的发现各种问题,经验是少不了的,所以还需要:

    5. 卡顿优化一些常见的生产案例解析

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

    相关文章

      网友评论

          本文标题:Android面试必问的性能优化,全面掌握

          本文链接:https://www.haomeiwen.com/subject/lkqoyrtx.html