IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 今天跟大家聊渲染,大家听到渲染机制,脑子里会想到哪些关键词? -> 正文阅读

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

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

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渲染优化、崩溃优化、内存优化、卡顿优化、存储优化、弱网优化、耗电优化等等一些技术点的解析需要参考学习的可以 点击这里 进行查看。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:18:35  更:2022-05-07 11:18:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 0:28:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码