本章介绍android高级开发中,对于性能方面的处理。主要包括电量,视图,内存三个性能方面的知识点。
1.视图性能
(1)Overdraw简介
Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次是最优的,但是由于重叠的布 局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,表现为应用卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需要尽量减少Overdraw的发生。
(2)Overdraw检测
Android提供了测量Overdraw的选项,在开发者选项-调试GPU过度绘制(Show GPU Overdraw),打开选项就可以看到当前页面Overdraw的状态,就可以观察屏幕的绘制状态。该工具会使用三种不同的颜色绘制屏幕,来指示 overdraw发生在哪里以及程度如何,其中:
- 没有颜色: 意味着没有overdraw。像素只画了一次。
- 蓝色: 意味着overdraw 1倍。像素绘制了两次。大片的蓝色还是可以接受的(若整个窗口是蓝色的,可以摆脱一层)。
- 绿色: 意味着overdraw 2倍。像素绘制了三次。中等大小的绿**域是可以接受的但你应该尝试优化、减少它们。
- 浅红: 意味着overdraw 3倍。像素绘制了四次,小范围可以接受。
- 暗红: 意味着overdraw 4倍。像素绘制了五次或者更多。这是错误的,要修复它们。
images/loading.gif' data-original="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXsAAAGbCAIAAACqGKfeAAAgAElEQVR4nOydd3wc1bX4z8ydtrtqu1O2qPe2VcWyLcnSSlppq+QO2AYZd1m2cQUbg40NphqM6RhCwiNUFwghCeCiYgN5SX7kpfIIIXRCMaYGbGt35vfH3V2v1SzJ8gs4Op/zOZq9c6fdufc75557ZwSKoiiKIv/wJRQKhUKh6HKvVcFgMBgM9k3vtXlUBtn5iOXclfPgp92rZPpdji2fga707EtgTMYEfujEiTabQZpWbOaB1vaij9yHQQMl9puhb6kOq5wHQmevqx6ckme88FAoFAwGB88/JmMyuvIDI05fP2UgwU0rNv/gjbMvKYaSf5A2P1wo9Np26DmjVzoQPvpK9DLxJtGffQttTMZkdOUHRpzQ6Z5ItG3ghaE0+77psSkDHVfpI6N/bUM4bjR9uFDodXV9SylagH037HcPYzImI5MfGHHk0x/Ig4RmQgN0GWLTB29FsVQ6ceLEiRMnvvvuu2+//fabb775+uuvv/rqq6+++urzzz///PPPP/vss6NHj3766aeffPLJxx9//PHHH38QkfdPl3ffffe90wWn//Of//zoo48+jsgnn3xy9OjRY8eOffHFF19++eVXX331zTfffPvtt8ePHz9x4sTJkydjLzwWSbGXMwgfY7ftdb3RgE5o0JjOmIzJyOQHRhzcAPqecGynIDYzTu/p6Tlx4sS333775ZdffvLJJx9++OE//vGP11577dVXX33ppZcOHDjw3HPP7dmz54knnti1a9c999xz++2333jjjddcc82GDRvWrFmzcuXKpUuXtrW1LV68eOHChfPmzZs7d25ra+sll1xywQUXzJw5c8aMGdOmTZs6deqUiLREpPl0iaZPjpEpU6ZEF7BMnTp1+vTpM2bMmDVr1uzZsy+++OLW1tZ58+YtWLBg0aJFixYtam9vX7Zs2cqVK9euXbthw4bNmzdv3br1uuuuu+2223bu3Hnvvfc+9NBDjz322N69e5999tlf/OIX3d3dr7zyyquvvvqXv/zljTfeeOeddz7++OPPP//8m2+++e6773p6enoVYC9yDbdXOCZjMpB8T4nTtxcTe57RGMS//vWvo0ePfvDBB3/729/+9Kc/vfLKK/v373/mmWcee+yxXbt27dy5c9u2bZs3b163bt2yZcsW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
提高程序在视图方面的性能, 总的原则就是:尽量避免重叠不可见元素的绘制。
(3)Overdraw改良
1)合理选择控件容器
Android提供的Layout控件主要包括 LinearLayout、TableLayout、FrameLayout、RelativeLayout。同一个界面可以使用不同的容器控件来表达,但是各个容器控件描述界面的复杂度是不一样的。一般来LinearLayout最易,RelativeLayout较复杂。 LinearLayout只能用来描述一个方向上连续排列的控件,而RelativeLayout几乎可以用于描述任意复杂度的界面。。综上所述: LinearLayout易用,效率高,表达能力有限。RelativeLayout复杂,表达能力强,效率低。从减少overdraw的角度来看,LinearLayout会增加控件数的层级,自然是RelativeLayout 更优,但是当某一界面在使用LinearLayout并不会比RelativeLayout带来更多的控件数和控件层级时,LinearLayout则是首选。
2)去掉window的默认背景
当使用Android自带的一些主题时,window会被默认添加一个纯色的背景,这个背景是被DecorView持有的。当自定义布局时又添加了一张背景图或者设置背景色,那么DecorView的background此时是无用的,但是它会产生一次Overdraw,带来绘制性能损耗。去掉window的背景可以在onCreate()中setContentView()之后调用 getWindow().setBackgroundDrawable(null);或者在theme中添加 android:windowbackground="null"。
3)去掉其他不必要的背景
父容器若已经有了背景,可不设置对应子控件的背景,及大的布局背景已经设置,应避免设置局部重复的背景。
4)自定义View处理
对于自定义的view视图,可以通过canvas.clipRect()来帮助系统识别那些可见的区域。这个方法可以指定一块矩形区域,只有在这个区域内才会被绘制,其他的区域会被忽视。这个API可以很好的帮助那些有多组重叠组件的自定义View来控制显示的区域。同时clipRect方法还可以帮助节约CPU与GPU资源,在clipRect区域之外的绘制指令都不会被执行,那些部分内容在矩形区域内的组件,仍然会得到绘制。除了clipRect方法之外,我们还可以使用canvas.quickreject()来判断是否没和某个矩形相交,从而跳过那些非矩形区域内的绘制操作。
5)ViewStub高效占位符
当遇到这样的情况,运行时动态根据条件来决定显示哪个View或布局。常用的做法是把View都写在上面,先把它们的可见性都设为 View.GONE,然后在代码中动态的更改它的可见性。这种模式的缺点是耗费资源。虽然把View 的初始View.GONE但是在Inflate布局的时候View仍然会被Inflate,程序运行时仍然会创建对象,会被实例化,会被设置属性,会耗费内存等资源。
推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub所向的布局就会被Inflate和实例化,然后ViewStub的布局属性都会传给它所指向的布局。这样,就可以使用ViewStub来方便的在运行时,要还是不要显示某个布局。
6)善用draw9patch
给ImageView加一个边框,通常在ImageView后面设置一张背景图,露出边框便完美解决问题,此时这个 ImageView,设置了两层drawable,两层drawable的重叠区域去绘制了两次,导致 overdraw。优化方案: 将背景drawable制作成draw9patch,并且将和前景重叠的部分设置为透明。由于Android的2D渲染器会优化draw9patch中的透明区域,从而优化了这次overdraw。
7)Merge
使用Merge标签来做容器控件。第一种子视图不需要指定任何针对父视图的布局属性,就是说父容器仅仅是个容器,子视图只需要直接添加到父视图上用于显示 就 行。另外一种是假如需要在LinearLayout里面嵌入一个布局 (或者视图),而恰恰这个布局(或者视图)的根节点也是LinearLayout,这样就多了一层没有用的嵌套,无疑这样只会拖慢程序速度。而这个时候如 果我们使用merge根标签就可以避免那样的问题。
2.内存性能
(1)内存分配与回收
每一个进程的Dalvik Heap都反映了使用内存的占用范围。这就是通常逻辑意义上提到的Dalvik Heap Size,它可以随着需要进行增长,但是增长行为会有一个系统为它设定上限。
逻辑上讲的Heap Size和实际物理意义上使用的内存大小是不对等的,Proportional Set Size(PSS)记录了应用程序自身占用以及与其他进程进行共享的内存。
Android 系统并不会对Heap中空闲内存区域做碎片整理。系统仅仅会在新的内存分配之前判断Heap的尾端剩余空间是否足够,如果空间不够会触发GC操作,从而腾 出更多空闲的内存空间。在Android的高级系统版本里面针对Heap空间有一个Generational Heap Memory的模型,最近分配的对象会存放在Young Generation区域。当这个对象在该区域停留的时间达到一定程度,它会被移动到Old Generation,最后累积一定时间再移动到Permanent Generation区域。系统会根据内存中不同的内存数据类型分别执行不同的GC操作。例如,刚分配到Young Generation区域的对象通常更容易被销毁回收,同时在Young Generation区域的GC操作速度会比Old Generation区域的GC操作速度更快(如图1所示)。
图1 根据不同内存数据类型执行不同GC操作
每一个Generation的内存区域都有固定的大小。随着新的对象陆续被分配到此区域,当对象总的大小临近这一级别内存区域的阀值时,会触发GC操作,以便腾出空间来存放其他新的对象(如图2所示)。
图2 对象值临近阀值触发GC操作
通常情况下,GC发生的时候,所有的线程都是会被暂停的。执行GC所占用的时间和它发生在哪一个Generation也有关系,Young Generation中的每次GC操作时间是最短的,Old Generation其次,Permanent Generation最长。执行时间的长短也和当前Generation中的对象数量有关,遍历树结构查找20000个对象比起遍历50个对象自然是要慢 很多的。
(2)内存测试插件
1)LeakCanary简介
LeakCanary是一个用于检测内存泄漏的工具,可以用于Java和Android,是由著名开源组织Square贡献。
因为static的生命周期过长,和应用的进程保持一致,使用不当很可能导致对象泄漏,在Android中应该谨慎使用static对象。
6)特别留意单例对象中不合理的持有
虽然单例模式简单实用,提供了很多便利性,但是因为单例的生命周期和应用保持一致,使用不合理很容易出现持有对象的泄漏。
7)珍惜Services资源
应用需要在后台使用service,除非它被触发并执行一个任务,否则其他时候Service都应该是停止状态。另外需要注意当这个service 完成任务之后因为停止service失败而引起的内存泄漏。 当你启动一个Service,系统会倾向为了保留这个Service而一直保留Service所在的进程。这使得进程的运行代价很高,因为系统没有办法把 Service所占用的RAM空间腾出来让给其他组件,另外Service还不能被Paged out。这减少了系统能够存放到LRU缓存当中的进程数量,它会影响应用之间的切换效率,甚至会导致系统内存使用不稳定,从而无法继续保持住所有目前正在运行的service。 建议使用IntentService,它会在处理完交代给它的任务之后尽快结束自己。
8)使用ProGuard来剔除不需要的代码
ProGuard能够通过移除不需要的代码,重命名类,域与方法等等对代码进行压缩,优化与混淆。使用ProGuard可以使得你的代码更加紧凑,这样能够减少mapping代码所需要的内存空间。
9)使用更加轻量的数据结构
考虑使用ArrayMap/SparseArray而不是HashMap等传统数据结构。
HashMap的容器,相比起 Android专门为移动操作系统编写的ArrayMap容器,在大多数情况下,都显示效率低下,更占内存。通常的HashMap的实现方式更加消耗内存,因为它需要一个额外的实例对象来记录Mapping操作。另外,SparseArray更加高效,在于他们避免了对key与value的自动装箱 (autoboxing),并且避免了装箱后的解箱。
10)避免在Android里面使用Enum
Android 官方培训课程提到过“Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.”,具体原理请参考《Android性能优化典范(三)》,所以请避免在Android里面使用到枚举。
11)减小Bitmap对象的内存占用
Bitmap是一个极容易消耗内存的大胖子,减小创建出来的Bitmap的内存占用可谓是重中之重,通常来说有以下2个措施:
- inSampleSize:缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。
- decode format:解码格式,选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差异。
12)使用更小的图片
在涉及给到资源图片时,我们需要特别留意这张图片是否存在可以压缩的空间,是否可以使用更小的图片。尽量使用更小的图片不仅可以减少内存的使用,还能避免出现大量的InflationException。假设有一张很大的图片被
13)内存对象的重复利用
大多数对象的复用,最终实施的方案都是利用对象池技术,要么是在编写代码时显式地在程序里创建对象池,然后处理好复用的实现逻辑。要么就是利用系统框架既有的某些复用特性,减少对象的重复创建,从而降低内存的分配与回收。
14)复用系统自带的资源
Android 系统本身内置了很多的资源,比如字符串、颜色、图片、动画、样式以及简单布局等,这些资源都可以在应用程序中直接引用。这样做不仅能减少应用程序的自身负重,减小APK的大小,还可以在一定程度上减少内存的开销,复用性更好。但是也有必要留意Android系统的版本差异性,对那些不同系统版本上表现存在很大差异、不符合需求的情况,还是需要应用程序自身内置进去。
15)注意Cursor对象是否及时关闭
在程序中我们经常会进行查询数据库的操作,但时常会存在不小心使用Cursor之后没有及时关闭的情况。这些Cursor的泄露,反复多次出现的话会对内存管理产生很大的负面影响,我们需要谨记对Cursor对象的及时关闭。
16)避免在onDraw方法里面执行对象的创建
类似onDraw等频繁调用的方法,一定需要注意避免在这里做创建对象的操作,因为他会迅速增加内存的使用,而且很容易引起频繁的gc,甚至是内存抖动。
17)StringBuilder
在有些时候,代码中会需要使用到大量的字符串拼接的操作,这种时候有必要考虑使用StringBuilder来替代频繁的“+”。
通常来说,Activity的泄漏是内存泄漏里面最严重的问题,它占用的内存多,影响面广,需要特别注意以下两种情况导致的Activity泄漏:
最典型的场景是Handler导致的Activity泄漏,如果Handler中有延迟的任务或者是等待执行的任务队列过长,都有可能因为Handler继 续执行而导致Activity发生泄漏。此时的引用关系链是Looper -> MessageQueue -> Message -> Handler -> Activity。为了解决这个问题,可以在UI退出之前,执行remove Handler消息队列中的消息与runnable对象。或者是使用Static + WeakReference的方式来达到断开Handler与Activity之间存在引用关系的目的。
- Activity Context被传递到其他实例中,这可能导致自身被引用而发生泄漏。
内部类引起的泄漏不仅仅会发生在Activity上,其他任何内部类出现的地方,都需要特别留意!可以考虑尽量使用static类型的内部类,同时使用WeakReference的机制来避免因为互相引用而出现的泄露。
19)考虑使用Application Context而不是Activity Context
对于大部分非必须使用Activity Context的情况(Dialog的Context就必须是Activity Context),都可以考虑使用Application Context而不是Activity的Context,这样可以避免不经意的Activity泄露。
(3)电量优化
电量其实是目前手持设备最宝贵的资源之一,大多数设备都需要不断的充电来维持继续使用。不幸的是,对于开发者来说,电量优化是他们最后才会考虑的的事情。但是可以确定的是,千万不能让你的应用成为消耗电量的大户。
有下面一些措施能够显著减少电量的消耗:
- 我们应该尽量减少唤醒屏幕的次数与持续的时间,使用WakeLock来处理唤醒的问题,能够正确执行唤醒操作并根据设定及时关闭操作进入睡眠状态。
- 某些非必须马上执行的操作,例如上传歌曲,图片处理等,可以等到设备处于充电状态或者电量充足的时候才进行。
- 触发网络请求的操作,每次都会保持无线信号持续一段时间,我们可以把零散的网络请求打包进行一次操作,避免过多的无线信号引起的电量消耗。关于网络请求引起无线信号的电量消耗。
1)消耗电量的几个主要原因、功能
- 大数据量的网络传输(网络)
- 不停的网络切换(网络)
- 解析大量的数据(CPU)
2)关于网络方面的优化
- 网络请求之前,检查网络连接。没有网络连接不进行请求
- 判断网络类型,针对特定的数据在特定的网络下请求。例如:大量数据传输的时候,在wifi下请求。wifi下下载数据耗电量只有2、3、4G的1/3.
- 使用效率高的解析工具。根据具体业务数据量的大小,选择合适的解析工具。例如android上面的协议解析一般推荐json。
- 使用GZIP压缩方式下载数据,能减少网络流量,缩短下载时间
- 合理使用缓存,避免重复操作
- 使用推送,代替循环请求
- 触发网络请求的操作,每次都会保持无线信号持续一段时间,我们可以把零散的网络请求打包进行一次操作,避免过多的无线信号引起的电量消耗。
- 是JobScheduler API所做的事情。它会根据当前的情况与任务,组合出理想的唤醒时间,例如等到正在充电或者连接到WiFi的时候,或者集中任务一起执行。我们可以通过这个API实现很多免费的调度算法。
3)电量优化策略
- 检查全部唤醒锁, 是否存在冗余或者无用的位置.
- 集中相关的数据请求, 统一发送; 精简数据, 减少无用数据的传输.
- 分析和统计等非重要操作, 可以在电量充足或连接WIFI时进行, 参考JobScheduler.
- 精简冗余的服务(Service), 避免长时间执行耗电操作.
- 注意定位信息的获取, 使用后及时关闭.
原标题:android 性能优化
关键词:Android