Android唤醒定时器,Android休眠唤醒和wakeup_source机制的使用(1)
基本概念及流程说明
Android自从到4.4之后就摈弃了臃肿的wake lock 机制,使用linux3.4之后加上的 wakeup_souce机制。到底wakeup_source 机制是怎样工作的?在讲述之前,先化小篇幅讲讲android 在wake lock 机制跟wakeup_source之间切换的取舍缘由。这部分有参考网上的相关资料。
android4.4 之前一直是基于linux 加入 wake_lock 来阻止系统休眠,每启动一个应用程序,应用程序都可以申请一个 wakelock 锁,并且注册到内核,只要是系统中有一个wake lock 的时候,系统就不能进入休眠。当early suspend 时候的最后一步回去检查“main”锁,main 锁是系统启动完毕自动加的一个锁;然后去检查其他的锁,如果没有锁存在,则自动进入休眠。总结来说休眠的过程就是检查“锁”有没被释放,一旦所有的锁被释放,那么内核就会自动进入休眠。说到这里,提一下,以前一些平板方案在没有电源管理的情况下做假休眠,也是使用获取 wakelock 锁来阻止内核进入休眠。
linux3.4 加入了 wakeup_source 机制,android4.4 也跟着抛弃了wake lock 机制,缘用内核的 wakeup_source(对上层接口不变,wake_lock 实现是基于wakeup_source 来实现的) ,wakeup_source 不带debug信息。
wakeup_source 使用了 autosleep机制,只要不存在任何 active wake_source ,系统自动休眠。
还有 android4.4 去除了 earlysuspend 机制,改为 fb event 机制,
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
