昨天被人问到是否有系统优化的经验,我说没什么优化,只是把一些不需要的东西给去掉,比如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层级,加载图片的分辨率,内存是否有不必要的重复释放,

    内存泄露的确认这些。

 

 

 

            

 

 

                

 

 

 

 

 

 

 

 

 

 

更多相关文章

  1. Android图形显示系统——上层显示1:界面绘制大纲
  2. 【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对
  3. Android 系统(243)---Android进程系列第一篇---进程基础
  4. Android电话系统之概述篇
  5. Android中 完美实现 计时 倒计时 时间间隔处理等功能实现 by Cou
  6. Android下Activity结束(finish())之后没有释放内存问题的解决方法
  7. Android系统体系结构分析

随机推荐

  1. Android(安卓)Intent初步试用
  2. Android中把assets目录下所有图片转换成b
  3. android 获取联系人和短消息信息
  4. Jenkins持续集成安卓 Android
  5. 代码获取Android的VersionCode和VersionN
  6. Android Error: java.lang.IllegalArgume
  7. android thread实例
  8. Android 拦截修改电话号码
  9. Android中自定义滑动选中控件WheelView
  10. Android(安卓)4.0 事件输入(Event Input)