alarm机制和timer机制在功耗上的作用区别

timer
安卓的timer类可以用来计划需要的循环执行任务,它用wakelock让cpu保持唤醒,会消耗大量的手机电量,不可取
alarmmanager
alarm机制是android系统封装的用于管理rtc某块,rtc real time clock是独立的硬件时钟,可以在cpu休眠时候正常运行,在预设的时间到达时,通过中断唤醒cpu
我们使用alarm机制来定时执行任务,cpu可以正常的休眠,只有在需要运行任务时醒来很短的时间。

安卓手机有两个处理器,一个是关于应用程序的ap,一个是关于通信协议栈的bp,ap是arm架构的处理器,是运行linux+android系统,bp用于运行实时操作系统,通线协议运行bp的实时操作系统上。除去AP外,非通话时间,比如底电测试的时候,BP功耗在5ma左右,只会起一些跟白名单和系统自带的服务,
但是应用程序起来的时候,功耗在50ma以上。
   安卓为了应用程序代码执行,提供了wakelock的api,使得应用程序申请权限阻止AP进入休眠。
在ap休眠的时候,消息仍然可以通过通信协议栈运行bp,接收到数据包时候,bp将ap唤醒,唤醒时间足够ap执行代码完成对收到的数据包的处理,alarm机制解决程序执行向服务器定时发送数据包的信息,bp计时,触发时唤醒ap执行程序代码,数据包的到应答,需要申请wakelock,成功后释放掉wakelock。定时发送,不怎么耗电


    还有关于之前的底电测试的原因,在30min时候会启动白名单的很多服务,这个安卓系统存在tcp长连接相关,
手机休眠的时候也会保持长连接,一般来说在30min左右,客户端发起心跳请求,此时会短暂的消耗手机电能,在这期间不怎么耗电
   还有个是gcm关于安卓消息推送,开发需要与服务器交互应用程序,获取服务器不定时更新的数据。比如qq,腾讯的服务器发送给gcm发出通知,然后再中专到设备上面,都是一个常驻的tcp连接,一直保持连接,手机休眠也存在

posted @ 2017-02-08 15:50  小k的布熊  阅读(746)  评论(0编辑  收藏  举报