zoukankan      html  css  js  c++  java
  • android 性能优化-电量篇

    消耗电量的几个主要原因、功能:
    1、大数据量的网络传输(网络)
    2、不停的网络切换(网络)
    3、解析大量的数据(CPU)

    关于网络方面的优化:

    1、网络请求之前,检查网络连接。没有网络连接不进行请求
    2、判断网络类型,针对特定的数据在特定的网络下请求。例如:大量数据传输的时候,在wifi下请求。wifi下下载数据耗电量只有2、3、4G的1/3.
    3、使用效率高的解析工具。根据具体业务数据量的大小,选择合适的解析工具。例如android上面的协议解析一般推荐json。
    4、使用GZIP压缩方式下载数据,能减少网络流量,缩短下载时间
    5、合理使用缓存,避免重复操作
    6、使用推送,代替循环请求
    7、触发网络请求的操作,每次都会保持无线信号持续一段时间,我们可以把零散的网络请求打包进行一次操作,避免过多的无线信号引起的电量消耗。
    8、是JobScheduler API所做的事情。它会根据当前的情况与任务,组合出理想的唤醒时间,例如等到正在充电或者连接到WiFi的时候,或者集中任务一起执行。我们可以通过这个API实现很多免费的调度算法。

     控件:

    1、对于自定义控件,我们可以通过canvas.clipRect()来帮助系统识别那些可见的区域。这个方法可以指定一块矩形区域,只有在这个区域内才会被绘制,其他的区域会被忽视。
    2、避免嵌套太多层控件
    3、合理使用include、merge

    GC相关优化:

    1、android的GC机制:Android里面是一个三级Generation的内存模型,最近分配的对象会存放在Young Generation区域,当这个对象在这个区域停留的时间达到一定程度,它会被移动到Old Generation,最后到Permanent Generation区域。
    2、执行GC操作的时候,任何线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行。
    3、Android系统里面有一个Generational Heap Memory的模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作。例如,最近刚分配的对象会放在Young Generation区域,这个区域的对象通常都是会快速被创建并且很快被销毁回收的,同时这个区域的GC操作速度也是比Old Generation区域的GC操作速度更快的。
    4、避免GC频繁操作:
      a、避免内存抖动;Memory Churn内存抖动,内存抖动是因为大量的对象被创建又在短时间内马上被释放。
      b、
    • 瞬间产生大量的对象会严重占用Young Generation的内存区域,当达到阀值,剩余空间不够的时候,也会触发GC。即使每次分配的对象占用了很少的内存,但是他们叠加在一起会增加Heap的压力,从而触发更多其他类型的GC。这个操作有可能会影响到帧率,
    •     并使得用户感知到性能问题。

       c、避免在for循环,onDraw中创建对象,无法避免的可以创建对象池,然后在不使用的时候释放

    5、主动回收java对象,特别是较大的,例如bitmap。减少GC的工作频率

    其他:

    1、尽量不要使用浮点运算
    2、定位可以使用wifi和移动网络基站,不要使用GPS。

    参考:

    http://www.cnblogs.com/hanyonglu/p/4244035.html


  • 相关阅读:
    网页中让flash在最底层显示
    在asp.net mvc模式下怎么实现导出Excel文件
    Tomcat的内存溢出(PermGen space)
    CentOS下安装7zip
    CentOS安装keychain
    HTML中添加水平滚动文字
    getOutputStream() has already been called for this response的解决方法
    小型服务器的分区方案
    Mysql导出存储过程
    CentOS安装FileZilla时找不到libtasn1.so.3
  • 原文地址:https://www.cnblogs.com/lipeil/p/5222917.html
Copyright © 2011-2022 走看看