ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

比精华更纯!美团技术官手码:32万字Android App高性能实战笔记,瞬间秒榜第一!

2020-12-29 20:29:37  阅读:206  来源: 互联网

标签:App 32 美团 官手码 7.3 内存 7.4 Android 性能


前言:

说到性能,不同的领域有不同的标准。对于移动 App 领域,性能的评判标准主要体现在App 的运行方式、工作效率以及使用的流畅性上。众所周知,Android 性能问题非常复杂,因为有成千上万种计算能力参差不齐的设备。但是大多数时候,我们只是保证了开发的 App 能够在自己的目标设备上完美运行。

对于广大的 Android 开发者来说,性能是他们最后才考虑的事情。大多数的 App 开发更强调个性化,开发者的目标是使 UI 看起来完美并且找到一个可行的商业化道路。但是,App的性能很大程度上像是家里的管道;当它正常工作时,没有人会关注或者考虑到它,然而一旦出错,人们马上就会陷入麻烦当中。

举个例子: 用户在注意到社交小工具、图像过滤器或者是支持克林贡语等其他特性之前,会先注意到 App 的性能不好。并且你猜怎么着?用户因为不满意性能而给 App 差评的比例要高于因其他问题而给 App 差评的比例。这也是我们说性能很重要的原因。开发 App 的时候,很容易就会忽略性能,但坦率地说,性能涉及你所做的一切。当性能体验不好时,用户就会开始抱怨,进而卸载你的 App,然后报复性地给你一个差评。

考虑到这些,性能听起来更像是应该关注的一个特征,而不是必须忍受的一种负担。但实话实说,提升性能是一件非常困难的事情。仅仅了解算法是不够的,你还需要了解Android 系统是如何执行它的,以及硬件又是如何响应 Android 系统的操作的。事实上,一行代码有可能会破坏整个 App 的性能,只是因为它滥用了一些硬件限制。但困难不仅仅是这些,因为有时候为了了解后台发生的事情,你甚至必须学习一整套的性能分析工具。这基本上是看待 App 开发的一种全新的方式,并不适合怯于挑战的人。

在本文中,将介绍如何从提升 App 的效率和速度的角度来探讨性能问题,可以帮助你进一步完善App,使其能够在 19 000 种不同的 Android 设备上运行并且获得极致的体验。

为了不影响阅读,只截图展示了章节部分内容,需要完整版详细PDF版或更多Android相关资料的小伙伴可以点此处直达免费领取方式。

第1章 Android的性能指标

1.1 性能对用户很重要

1.1.1 电子商务和性能

1.1.2 电子商务之外的影响

1.1.3 性能可以节省基础设备

1.2 最恶劣的性能影响因素:宕机

1.2.1 低性能就像持续的宕机

1.2.2 消费者对性能bug的态度

1.2.3 智能手机电池寿命:矿井中的金丝雀

1.3 App性能问题的检测

1.3.1 模拟测试

1.3.2 真实用户监测

1.4 总结

第2章 构建Android设备实验室

2.1 你的用户都在使用什么设备

2.2 设备特性分布

2.2.1 屏幕

2.2.2 SDK版本

2.2.3 CPU/内存和存储

2.3 用户使用的网络

2.4 你的设备不是用户的设备

2.5 测试

2.6 创建设备实验室

2.6.1 你想要花很多钱买设备吗

2.6.2 我应该购买什么样的设备

2.6.3 除了手机之外

2.6.4 Android Open Source Project设备

2.6.5 其他选择

2.6.6 其他注意事项

2.6.7 我的设备实验室

第3章 硬件性能和电池寿命

3.1 Android的硬件特点

3.2 少即是多

3.3 耗电原因

3.3.1 Android能耗统计文件

3.3.2 屏幕

3.3.3 无线设备

3.3.4 CPU

3.3.5 其他传感器

3.3.6 休眠

3.3.7 WakeLock和Alarm

3.3.8 Doze模式

3.4 基本的电量消耗分析

3.4.1 详细的App电量消耗分析

3.4.2 能耗数据和数据流量

3.4.3 App休眠

3.5 高级电池监控

3.5.1 电能统计

3.5.2 Battery Historian

3.5.3 Battery Historian 2.0

3.6 JobScheduler

第4章 屏幕和UI性能

4.1 UI性能基准

卡顿

4.2 Android上的UI和渲染性能改进

4.3 创建视图

Hierarchy Viewer

image.png

4.4 资源缩减

4.4.1 屏幕的过度绘制

4.4.2 检测过度绘制

4.4.3 Hierarchy Viewer中的过度绘制

4.4.4 过度绘制和KitKat(Overdraw Avoidance)

4.5 分析卡顿(测量GPU的渲染性能)

Android Marshmallow里的GPU渲染

4.6 丢帧

4.6.1 Systrace

4.6.2 Systrace Screen Painting

4.6.3 Systrace和CPU阻塞渲染

4.6.4 Systrace更新——2015年Google I/O开发者大会

4.6.5 第三方工具

4.7 感知性能

4.7.1 进度条:优缺点

4.7.2 动画掩盖加载时间

4.7.3 即时更新的善意谎言

4.7.4 提高感知性能的建议

4.8 小结

第5章 内存性能

5.1 Android内存:它是如何工作的

5.1.1 共享内存与私有内存

5.1.2 脏内存与干净内存

5.1.3 内存清理(垃圾回收)

5.1.4 确定App使用的内存大小

5.1.5 procstats

5.1.6 Android内存警告

5.2 Java中的内存管理/泄露

5.3 追踪内存泄露的工具

5.3.1 Heap Dump

5.3.2 Allocation Tracker

5.3.3 增加一处内存泄露

5.3.4 更加深层次的堆解析:MAT和LeakCanary

5.3.5 Eclipse内存分析工具——MAT

5.3.6 LeakCanary

第6章 CPU与CPU性能

6.1 检测CPU占用率

6.2 使用Systrace分析CPU

6.3 Traceview(遗留的监视器DDMS工具)

6.4 Traceview(Android Studio)

6.5 其他优化工具

第7章 网络性能

7.1 Wi-Fi与蜂窝无线电

7.1.1 Wi-Fi

7.1.2 蜂窝

7.1.3 RRC状态机

7.2 测试工具

7.2.1 Wireshark

7.2.2 Fiddler

7.2.3 MITMProxy

7.2.4 AT&T ARO

7.2.5 混合型App和WebPageTest.org

7.3 Android网络优化

7.3.1 文件优化

7.3.2 精简文本文件(Souders:精简JavaScript)

7.3.3 图片

7.3.4 文件缓存

7.3.5 文件之外

7.3.6 分组连接

7.3.7 检测应用的无线电使用情况

7.3.8 适时关闭连接

7.3.9 定期执行重复的ping命令

7.3.10 网络安全技术的应用(HTTP和HTTPS)

7.4 全球移动网络覆盖范围

7.4.1 CDN服务器

7.4.2 在慢速网络中测试App

7.4.3 仿真慢速网络而不用倾家荡产

7.4.4 构建网络感知App

7.4.5 计算延迟

7.4.6 最后一英里的延迟

7.4.7 其他无线电

7.4.8 GPS

7.4.9 蓝牙

第8章 真实用户监测

8.1 启用RUM工具

8.2 RUM分析:示例程序

8.3 崩溃

8.3.1 分析Crashlytics的崩溃报告

8.3.2 使用

8.3.3 实时信息

8.4 大数据的营救

RUM SDK的性能

8.5 小结

总结:

性能优化不是更新一两个版本就可以解决的,是持续性的需求,持续集成迭代反馈。在实际的项目中,在项目刚开始的时候,由于人力和项目完成时间限制,性能优化的优先级比较低,等进入项目投入使用阶段,就需要把优先级提高,但在项目初期,在设计架构方案时,性能优化的点也需要提早考虑进去,这就体现出一个程序员的技术功底了。

什么时候开始有性能优化的需求,往往都是从发现问题开始,然后分析问题原因及背景,进而寻找最优解决方案,最终解决问题,这也是日常工作中常会用到的处理方式。

文中所叙资料和更多Android架构相关资料都是免费分享给大家的额,但为了不影响阅读,只截图展示了章节部分内容,需要完整版详细PDF版或更多Android架构相关资料的小伙伴可以点此处免费获取哦。

多多支持,即可免费获取资料——三连之后(承诺:100%免费)

快速入手通道:(点这里)下载!诚意满满!!!

觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

标签:App,32,美团,官手码,7.3,内存,7.4,Android,性能
来源: https://blog.csdn.net/Coo123_/article/details/111936251

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有