分享好友 最新动态首页 最新动态分类 切换频道
面试官:说下简历中提到的优化/整理下早期自己做的优化
2024-12-27 12:35

作者:张力尹

面试官:说下简历中提到的优化/整理下早期自己做的优化

先来点废话
听说最近 Android 岗位变多了,你去面试了么
面试官:你简历中提到了卡顿优化,做了哪些优化呢,展开说说。
:哦,脑子飞速闪过网上的文章,然后说内存泄漏、内存抖动、启动优化、布局优化、图片优化、网络优化…
面试官:细节呢,详细些。
:哦,啊,哈哈哈…

文章初衷
网上优化文章很多,各种主题都有,每次看那些大牛文章都觉得好有道理,啊我会了,可实际应用到项目的时候又不知道从哪里下手…
咋的,说的是不是你?反正这真的就是我。所以想着把自己做的一些小优化分享出来,主题尽量明确,看后更易上手,让世界更美好「为以后的面试润色」…

先不引入 Matrix 等第三方库,。

子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”

如果你刚刚开始优化,那就别上来就扯 systrace 和 traceview「已被废弃」 了,先看看 Android Profiler 吧。看看它能做什么

  • CPU 性能分析器有助于查出运行时性能问题。
  • 内存分析器有助于跟踪内存分配情况。
  • 网络性能分析器可监控网络流量使用情况。
  • 能耗性能分析器可跟踪能耗情况,这有助于分析电池电量消耗过快的问题。

ps:如果熟练此段可略过。另外只涉及到 java 层,未涉及到 native 层泄漏。
几年前,提到内存泄漏,很多人都会想到 LeakCanary,上手简单,而且去面试的时候很多时候还会问 LeakCanary 实现原理 / 为什么不能在线上应用等等…
现在时代换了,官方直系血亲来了。
本文使用的Studio版本:Android Studio Giraffe | 2022.3.1 Beta 1

先说定位步骤

  • 创造泄漏环境
    App 多点几个页面,复杂页面可执行多次进入/退出的操作,再回到App 首页
  • 打开 Profiler 界面
  • 点击如下绿框选中icon
  • 呈现如下图,内存问题排查需要进入到 memory 模块
  • 捕获堆转储「即选择绿框内容」,并点击record,会自动开始分析,等待即可
  • 自动停止后,会出现如下展示
  • 选择绿框选项,会筛选出 activity/fragment 层级的内存泄漏

适用场景:已知某个行为会触发卡顿,eg:点击到某个tab,进入某个页面

先说定位步骤

  • 进入Profiler,点击进入 CPU 模块
  • 选中第四个「Java/Kotlin Method Sample」,点击record
  • 自己点击stop后,等待生成文件,有需要可以右键保存为 trace 文件;双击 main 模块,点击具体分析 UI 线程做了啥大事。

看到上图其实已经大概意识到事情没这么简单了…为啥?看颜色

  • 对系统 API 的调用显示为橙色
  • 对应用自有方法的调用显示为绿色
  • 对第三方 API(包括 Java 语言 API)的调用显示为蓝色

tip:调节下图绿框中的两个箭头位置也可以放大/缩小

接下来就是重点看绿色部分,看看自有方法为啥导致绿色长度这么明显。

解决的问题

下面列出来的,都是我通过上面的方式,解决的部分问题。
声明:以下数据均比生产环境的值要小…

1.PackageInfo 相关的问题

通过 CPU Profiler 可以看到下图

 
2.Websocket 使用问题

如下图,发现 UI 线程里面有大量 GSON 解析的操作,再跟踪,发现 App 中对于 WebSocket 的数据接收和处理,基本上是 UI 线程,造成掉帧 or 卡顿 or ANR。其实也惭愧,这个问题竟然之前没注意…

对于我们的 App 来讲,更致命,因为场景主要是歌房,消息基本都是通过 ws 来处理的,里面有各种UI的频繁更新、各种动效、各种动画、歌曲演唱…

所以凭借这个优化了整个App 对于 ws 的使用,改完后经住了测试组的压测、发热/卡顿等都好了很多。

3.EmojiManager.renderEmoji 方法
4.图文混排

项目中应该都有这种形式,text+icon 这种,如果在 RecyclerView 中使用,那卡顿就比较明显了

5.骨架屏耗时

这是之前的业务需求,后来一跑太耗时,直接下掉了…

6.获取通知是否可用

业务中很多关于是否获取通知权限的判断,这种case 应该存为全局常量,必要情况再去重新获取值。

Profiler 部分小结

这里说的只是初步使用,还有更细节且更精准定位某个方法的方式,需要去继续探索了。不过虽是初步使用,但是在我公司的项目里解决了不少问题,大家也开始吧 ~ 在一些场景下用 Profiler 去定位卡顿是不方便的,所以有很多优秀的框架 Matrix、Booster、KOOM 等。

这个主题很大,开始的话,时间也比较长,前期储备较多知识点,具体应用还要结合自己的项目,我在这里只是提一下主题。

为了帮助到大家更好的全面清晰的掌握好性能优化,准备了相关的核心笔记(还该底层逻辑

性能优化核心笔记

《Android 性能监控框架》

《Android Framework学习手册》

  1. 开机Init 进程
  2. 开机启动 Zygote 进程
  3. 开机启动 SystemServer 进程
  4. Binder 驱动
  5. AMS 的启动过程
  6. PMS 的启动过程
  7. Launcher 的启动过程
  8. Android 四大组件
  9. Android 系统服务 - Input 事件的分发过程
  10. Android 底层渲染 - 屏幕刷新机制源码分析
  11. Android 源码分析实战
最新文章
文艺晚会策划书剧本(五篇)
每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。大家想知道怎么样才能写一篇比较优质的范文吗?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。
uc神马搜索广告表单推广怎么做
uc神马搜索广告表单推广怎么做,这是许多广告主都关心的问题。作为遵义腾浪科技有限公司的全平台广告开户推广渠道,我们为您提供了解答和解决方案。关键词:、、。在进行uc神马搜索广告表单推广之前,您需要进行广告开户。作为腾浪科技的渠
电脑硬盘重新分区教程「苹果电脑如何重新分区」
刚买的新电脑,一般情况下只有两个或四个盘符,很多人就需要给电脑重新进行分区,想要多设置几个分区,方便更好的管理电脑的各个数据。但是很多人不太会设置,下面小编就教大家两个方法快速给新电脑进行分区。使用电脑自带的磁盘管理来进行
打造卓越展示型,策略解析与实战攻略
构建高效展示型,本书提供全面策略与实战指南。涵盖设计、用户体验、内容优化、SEO技巧等多方面内容,助您打造专业、易用、流量高的展示型。从规划到实施,深入解析成功案例,提升竞争力。展示型的特点搭建策略解析实战操作手册在互联网的
熊猫咖啡屋 云手机多开挂机
《熊猫咖啡屋》是一款轻松治愈的3D模拟经营游戏,带你体验咖啡文化和经营咖啡店的快乐!通过「熊猫咖啡屋云手机软件」可以大大提高您的挂机搬砖效率:多多云手机完全模拟真实手机环境,每一台专业云手机都是独立系统,允许用户在云手机里安
生成式AI每年可为经济增加2.6万亿美元至4.4万亿美元
▼麦肯锡表示:“生成式人工智能可能对知识工作产生最大的影响,特别是涉及决策和协作的活动,而这些活动以前自动化的潜力最低。”生成式人工智能有可能改变组织组织内部公司信息的方式,使员工更容易通过类似 ChatGPT 的查询界面访问存档信
蛙漫漫画app官方免费版下载最新版
蛙漫漫画app官方免费版是一款非常优秀的漫画阅读平台!蛙漫漫画app不仅丰富了用户的漫画阅读资源,同时还提供了便捷的使用方式和多种阅读设置,支持离线下载,用户可以将自己喜欢的漫画作品下载到本地,随时随地进行阅读;如果你是一名热爱
高清美女写真生成攻略:用AI轻松打造你的理想形象!
DALL-E:作为OpenAI开发的强大工具,DALL-E以“从文字到图像”的技术闻名。用户只需输入一段描述,它就能生成精美的图片,并在某些情况下还能理解更复杂的指令。然而,DALL-E在生成面部图像时效果有时不够稳定,可能会出现失真或不自然的细
TOP榜十大Ai大模型培训学校综合排名2025实时更新一览
数学基础:深入理解线性代数、概率论、统计学和微积分等基础数学知识,这些是构建和理解AI大模型的重要基石。算法原理:掌握深度学习的基本概念和算法,如反向传播算法、梯度下降优化算法等,这些算法是训练和优化AI大模型的关键。模型架构
色蜂视频如何提升用户体验-它的互动功能和内容创作模式有何优势
色蜂视频,作为近年来兴起的一种视频分享平台,逐渐在网络中积累了大量的用户。它不仅提供了丰富的视频内容,而且还给用户提供了一个互动性强的社交空间,受到不少用户的喜爱。对于广大视频爱好者来说,色蜂视频无疑是一个值得关注的选择。
相关文章
推荐文章
发表评论
0评