赞
踩
说起性能优化,很多人都感觉头痛不已,近些年来也是无数人在面试中因为性能优化而折戟沉沙。其实抽丝剥茧开来,Android的性能优化,主要从以下几个方面开展:
稳定(内存溢出、崩溃)
流畅(卡顿)
耗损(耗电、流量)
安装包(APK瘦身)
(1)Memory Monitor 工具:Android Studio自带的一个内存监视工具,它可以很好地帮助我们进行内存实时分析。通过点击Android Studio右下角的Memory Monitor标签,打开工具可以看见较浅蓝色代表free的内存,而深色的部分代表使用的内存从内存变换的走势图变换,可以判断关于内存的使用状态。
(2)LeakCanary:Square公司基于MAT开发的一款监控Android内存泄漏的开源框架:利用了Java的WeakReference和ReferenceQueue,通过将Activity包装到WeakReference中,被WeakReference包装过的Activity对象如果被回收,该WeakReference引用会被放到ReferenceQueue中,通过监测ReferenceQueue里面的内容就能检查到Activity是否能够被回收(在ReferenceQueue中说明可以被回收,不存在泄漏;否则,可能存在泄漏。
(3)Android Lint :Android Lint Tool 是Android Sutido集成的一个Android代码提示工具,它可以给你布局、代码提供非常强大的帮助。硬编码会提示级别警告。
卡顿的场景通常发生在用户交互体验中。影响卡顿的两大因素,分别是界面绘制和数据处理。
界面绘制:主要原因是绘制的层级深、页面复杂、刷新不合理,由于这些原因导致卡顿的场景更多出现在 UI 和启动后的初始界面以及跳转到页面的绘制上。
数据处理:导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况,一是数据在处理 UI 线程,二是数据处理占用 CPU 高,导致主线程拿不到时间片,三是内存增加导致 GC 频繁,从而引起卡顿。
(1)计算优化。算法、for循环优化、Switch…case替代if…else、避开浮点运算。浮点运算比常规运算更复杂,因此计算机进行浮点运算速度要比进行常规运算慢得多。
(2)避免 Wake Lock 使用不当。Wake Lock是一种锁的机制,主要是相对系统的休眠而言的,,只要有人拿着这个锁,系统就无法进入休眠意思就是我的程序给CPU加了这个锁那系统就不会休眠了,这样做的目的是为了全力配合我们程序的运行。
(3)使用 Job Scheduler 管理后台任务。在Android 5.0 API 21 中,google提供了一个叫做JobScheduler API的组件,来处理当某个时间点或者当满足某个特定的条件时执行一个任务的场景,例如当用户在夜间休息时或设备接通电源适配器连接WiFi启动下载更新的任务。这样可以在减少资源消耗的同时提升应用的效率。
(1)安装包的组成结构assets文件夹。存放一些配置文件、资源文件,assets不会自动生成对应的 ID,而是通过 AssetManager 类的接口获取。
(2)减少安装包大小代码混淆。使用IDE 自带的 proGuard 代码混淆器工具 ,它包括压缩、优化、混淆等功能。资源优化。
还有冷启动、热启动等很多性能优化方面的技巧,在这里就不展开赘述了。大家可以看到性能优化涉及到的知识可以说是比较繁杂。为了帮助大家更好地掌握好性能优化相关内容,这里给大家分享一份2022大厂性能优化项目实战宝典。我们可以看下已经在大厂中的开发者,对于性能优化有着怎样的心得,需要的可以文末点击卡片扫码免费领取:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。