博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 休眠唤醒
阅读量:4075 次
发布时间:2019-05-25

本文共 2035 字,大约阅读时间需要 6 分钟。

android v2.3linux	v2.6.37wakelock 和 early_suspend能够实现系统的唤醒和休眠功能1.wakelockwakelock是一种锁机制,只要有人拿着这个锁,系统就无法进入休眠,wakelock有加锁解锁二种状态超时锁:在设定的时间到了后自动解锁不超时锁:需要显示的解锁include/linux/wakelock.henum {	WAKE_LOCK_SUSPEND, //防止系统进入睡眠	WAKE_LOCK_IDLE,    	WAKE_LOCK_TYPE_COUNT};2.early_suspend 在linux 内核的睡眠过程前被调用,因为背光需要的电能大,可以在内核中先注册上early_suspend函数当系统进入睡眠之前会首先调用这些注册的函数android休眠唤醒的的文件kernel/power/console.cearlysuspend.cfbearlysuspend.cmain.cpoweroff.csuspend.cwakelock.cuserwakelock.carch/arm/mach-omap2/pm34xx.c pm.c3.android 休眠当用户读写/sys/power/state时,/kernel/power/main.c中的state_store()函数会被调用# echo mem > sys/power/state                                                    [   61.009735] ------state_store------                                          [   61.013366] ------request_suspend_state------                                [   61.017944] request_suspend_state: sleep (0->3) at 61399169254 (2000-01-01 00:00:56.084929752 UTC)                                                           [   61.027496] ------early_suspend------ state_store会调用request_suspend_state()然后调用early_suspend_work的工作队列void request_suspend_state(suspend_state_t new_state){	---------------------	queue_work(suspend_work_queue, &early_suspend_work);	---------------------}static DECLARE_WORK(early_suspend_work, early_suspend);early_suspend_work的工作队列进入early_suspend()函数中static void early_suspend(struct work_struct *work){	-------------------	//调用已经注册的early_suspend函数	list_for_each_entry(pos, &early_suspend_handlers, link) {		if (pos->suspend != NULL)			pos->suspend(pos);	}	------------------	sys_sync();//同步文件系统}4. android 唤醒# echo on > sys/power/state                                                     [  582.205108] ------state_store------                                          [  582.208740] ------request_suspend_state------                                [  582.213317] request_suspend_state: wakeup (3->0) at 582594543042 (2000-01-01 00:09:37.501769604 UTC)                                                         [  582.222839] ------late_resume------  跟睡眠的过程相反

转载地址:http://hakni.baihongyu.com/

你可能感兴趣的文章
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>
线程同步(C# 编程指南)
查看>>
flex addChild 的一个小细节
查看>>
Adobe Flash gets its full launch on Android
查看>>
java.nio.BufferOverflowException
查看>>
对于大型公司项目平台选择j2ee的几层认识(二)
查看>>
flash player10 Vector类型
查看>>
德克萨斯扑克初级玩家必胜玩法
查看>>
Flex数据绑定陷阱:常见的误用和错误(一) - 闪吧教材.jpg
查看>>
alchemy的Box2D版本
查看>>
Alchemy简单入门教程(FlashCS4环境)
查看>>
AS3的深度管理及排序
查看>>
翻译:Adobe AIR 2.6的新特性
查看>>
puremvc多核版与单核版的区别
查看>>
详细说说ActionScript中function的call()方法和apply()方法
查看>>
WebBase(基于AS3的Flash全站基架)
查看>>