Android App功耗浅析

1.   主要原因

(1)http请求(GZIP压缩)

(2)json数据解析(json解析效率主要是解析耗时),大量的数据解析

(3)数据库读写操作

(4)SD卡读写操作

(5)程序的执行的timer定时器(例如IM中的心跳包,用系统的Alarm优化)

(6)网络切换(wifi会比手机的数据移动网络更加省电)

2.  优化方案

(1)http请求:可以采用gzip压缩减少传输过程中的数据量,app发起http请求和服务端返回的http请求数据都采用gzip压缩。

(2)json解析:推荐使用jackson。

(3)尽量优化数据表设计,避免冗余字段,避免冗余表。

(4)SD卡读写,尽量减少SD卡读写操作,包括SharedPreferences,能保存在内存中的尽量保存在内存中,不用害怕内存爆掉,内存绝对不会因为多存了几十个变量而溢出的,如果你需要保存到SD卡的数据很多那只能说你的App设计有问题,建议重新理下App的编码设计或者是功能设计。

(5)java语言中的timer是采用线程实现的,只要是手机不休眠就会一直跑,所以我们应该尽量采用系统那种Alarm来实现上述功能,例如心跳包,我见过网上的IM的SDK的心跳包基本都是采用系统闹钟加上广播实现的,而且timer和handler有一个弊端,在手机休眠的时候这两个的执行是被挂起的,当时候不休眠的时候它们才会继续计时执行,而系统那种即使在手机休眠的时候也会保持在指定时间点唤醒cpu执行操作,结束后再进入休眠,也就是说系统的alarm只有在计时到的那个时间点才会执行,而timer计时是在计时过程中一直跑,我看timer实现的源码是用while(true)循环来检测是否到时间点,没到就wait,并且continue。

(6)手机数据流量网比wifi更加耗电,因为手机数据流量会调用手机上面的一些硬件设备,从而唤醒cpu增加耗电,这个跟开启摄像头,开启gps是一样的,一设计调用硬件设备的绝对唤醒cpu,一唤醒cpu耗电绝对增加。

 

3.   源码角度

http://www.cnblogs.com/hyddd/p/4402621.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值