玩转安卓运行速度优化

原文链接 玩转安卓运行速度优化

早在许多年以前写过一篇安卓性能优化文章,时过境迁,很多事情都有了变化,所以再专门针对程序运行速度和渲染的优化,这两方面非常直接的影响应用程序的操作流畅度,也可以称作流畅度优化方法,但更为专业的方式就是CPU优化,因为就是要提高代码的运行速度。

[图片上传失败...(image-ba6dc1-1695042181362)]

需要优化的地方

总的来说,就是应用程序运行要快,大体可以分为三块:

应用启动要快

从用户点击了桌面的图标到用户能完整见到页面,这个过程要快。其实也不是快,而是没有能从用户感知得到的卡,或者黑屏或者白屏。

渲染要快

也就是说View的渲染要快,无明显的Jank,也即卡顿和丢帧。

操作要流畅

主要是针对动画,滑动,转场的时候要流畅,也并不一定就是要真的快,而是说从用户感知的角度来看没有明显的卡顿和丢帧。

业务逻辑要快

也就是说要快速的完成你的业务逻辑,这个其实没有办法一概而论,取决 于具体的业务逻辑和实际的使用场景,比如网络不好的时候肯定啥都慢啊。

我们常说的性能优化,一般重点是在启动,渲染和操作流畅度上面下功夫,因为这些东西的优化方法更为通用一些,用户感知也更明显一些。也将是我们后面要讨论的重点内容。而至于像业务逻辑,每个具体的应用程序都不一样,所以没有办法一概而论,而常规的一些小的优化技巧也不会起决定性使用。比如说I/O优化方法,缓存的使用,以及像内存优化等等,确实能帮助你的业务逻辑。但如果业务逻辑就是特别复杂,或者代码写的很差劲,明明一个网络请求就能搞定的事儿,非要弄四五个请求,那你再怎么优化细节,比如把每个请求速度都优化到最好,I/O优化到最好,也是没有多大提升的。

运行速度分析方法

前面提到的启动优化,渲染优化和操作流畅度优化,其实都是针对CPU的优化,也即代码执行的优化,只不过重点分析那三个场景而已。

具体的分析方法主要就有两方面,一是用Profiler抓取trace,另外就是可以在代码中加入打点数据。

可以先行用代码代码打点的方式进行粗略的量化,比如说看onCreate执行了多久,看onResume执行了多久,这有两方面好处,一是可以粗略的定位问题,二是方便监控,比如你优化前与优化后的对比,能知道到底是否真的有提升。

精细化分析的方法就是抓trace,然后看具体哪里耗时了,具体使用方法可参后面的罗列的资源都相当详细,就不重复了。

[图片上传失败...(image-225d6c-1695042181362)]

需要注意的就是分析trace时除了用Profiler以外,还可以用Perfetto,这个功能更为强大。

[图片上传失败...(image-9c86b-1695042181362)]

优化方法

具体的优化方法,就没有银弹了,做的事情特别多,代码特别复杂,逻辑特别多特别复杂,优化起来难度自然很大。

核心的原则就是少,少即是多,少做事,特别是主线程,能lazy则lazy,能异步则异步,涉及I/O时,要多用BufferedStream,巧用缓存,buffer尽可能要是8k大小(8192),有重I/O的场景要用nio库。View tree要尽可能精简和扁平,某些特殊条件才会显示的页面就用ViewStub先占着等等。

参考资料

原创不易,打赏点赞在看收藏分享 总要有一个吧

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容