昨天被人问到是否有系统优化的经验,我说没什么优化,只是把一些不需要的东西给去掉,比如apk,和一些多余的lib.
自信想想,其实我们还是做了很多的优化工作的,当然有一些是针对应用来做的,只是自己对Android系统优化一直没
有做一个系统的思考,所以才会做出这样的回答。那这边文章后续会一直更新,写下自己针对Android系统优化的一些思考。
一。人们谈到系统的优化,哪些方面可以做优化呢,我初步的想法有以下几个点:
1. 首先就是系统的界面的优化,交互的优化:
那比如我们做电视的,需要对各种系统UI进行定制,
那比如说音量条,系统的弹窗风格,系统的升级界面,安装界面,关机界面、最近运行应用,
升级后安装配置过程的用户提示信息,等等一些统一的系统元素需要去优化。
2. 系统对外接口的优化以及后续开发维护的优化,方便应用层的开发。
提供我们自己统一的中间件接口,供外部应用调用,这样可以方便后续的应用开发工作。
增加自己的Overylay,方便后续平台的移植工作。
制定自己的按键键值标准,方便后续移植工作。
3. 生产、升级、调试等功能相关的优化
生产过程中的一些工厂菜单,然后生产后的一键复位。
日志的上传、售后问题的分析。
4. 各项功能的优化
5. 系统的性能优化
针对用户可感知的部分:升级后安装配置的时间优化,开机时间的优化,开机后应用启动时间的优化,
系统操作流畅度的优化。
当然一般人讲的可能是第5点,那么就专门针对第5点再讲。
二、 关于系统性能的优化
主要涉及到3个方面:
1. CPU占用的优化
比如系统是否开启了太多的不必要的打印,
到底是哪些进程占用了较高的CPU,到底是哪些线程在占用较高的CPU。
是否有一些不必要的应用后台重新启动。
2. 内存使用的优化
内存占用主要分析几点,哪些应用占用得太高了,是否存在内存泄漏,
是否存在内存不必要的重复分配和回收。
3. I/O使用的优化
系统的I/O是否过高,I/O 是什么,主要主要是对外部存储设备(EMMC,U盘)‘
以及其他外设的访问,包括外部麦克风和摄像头设备的访问, WiFi蓝牙设备的访问等。
对外部存储设备的访问,主要是读写文件,数据库文件,
外部存储设备的读写是很慢的,很耗时的,所以如果有频繁的读写,是会很影响系统的性能。
关于之前的一些优化:
去掉一些不必要的apk和lib,其实主要是涉及到I/O部分的优化。因为apk多了,那么系统开机的时候
扫描分析apk的时间就长了。这个不仅会优化开机时间,系统内也可以少了这部分apk对cpu和内存的占用。
然后之前我们遇到的酷云互动不断地进行后台抓取屏幕信息,并且将这个图片保存到EMMC,这个就涉及
到频繁的I/O操作,所以这个是肯定不好的。
另外,针对DropBox这个东西,如果是系统内有频繁发生的应用挂掉,那么这个也会造成对EMMC的反复读写。
需要进行限制,否则也是会严重的影响性能的。
那么针对应用相关的优化,主要是以下几个部分:
1. 广播的禁止接收,启用白名单和黑名单机制,对于非白名单的应用,静止开机自启动,这样可以节省内存和cpu的占用。
2. 应用启动时间的优化 ,主要通过traceview来检查启动过程中哪些比较耗时。
3. 应用的性能优化,主要检查UI是否有过度渲染,UI层级,加载图片的分辨率,内存是否有不必要的重复释放,
内存泄露的确认这些。