android电源管理简要

来源:互联网 发布:域名和公网ip绑定 编辑:程序博客网 时间:2024/05/22 12:37

1, Android中支持的电源状态:

        PM_SUSPEND_ON -- 设备处于全电源状态,也就是正常工作状态;

        PM_SUSPEND_MEM -- suspend to memory,设备进入睡眠状态,但所有的数据还保存在内存中,只有某些外部中断才可以唤醒设备。

       PM_SUSPEND_STANDBY  ----- 在大部分的Android设备中均不支持。

 

2, Early Suspend / Late Resume

         在Android中,增加了系统休眠的层次,把休眠划分为深度睡眠(sleep)和浅度睡眠(idle)。  

         因此当系统往 /sys/power/state 节点写入 mem (如在命令行 写入: echo mem > /sys/power/state) 将会使系统进入睡眠。参考HAL中:hardware/libhardware_legacy/power/power.c  :  set_screen_state   ------> write (on / mem )   to  /sys/power/state

         浅度睡眠 仅仅是关掉背光,fb, sensor,触摸屏等在关屏状态下不需要使用的设备,而整个CPU和大部分外设还是正常工作的。

                                                   

            深度睡眠sleep 与 浅度睡眠 idle 之间切换的过程如上所示。

 

3,  Android的 Wake Lock

          Android系统提供了两种类型的锁:

                   WAKE_LOCK_SUSPEND  --  阻止系统进入suspend状态;

                   WAKE_LOCK_IDLE  --  阻止系统进入idle状态;

                   wake lock 可以设置超时释放,在持有wake lock一个固定时间之后自动释放。一般应用在系统正在处理一些事情的时候,防止系统进入深度睡眠而干扰了正在处理的任务; 尤其是在做了硬件唤醒的,当唤醒之后要处理一些响应,为了防止系统马上再次进入休眠,在设置一个超时锁。

          如系统能否进入深度睡眠,当系统处在idle时,会不断判断是否还有WAKE_LOCK_SUSPEND

        

4,  电源状态切换的调试:

           /sys/power/state

          /sys/power/wake_lock

          /sys/power/wake_unlock

          1)  cat  /sys/power/state -----查看系统状态,  echo mem > /sys/power/state    ---- 将系统设置为进入休眠

          2) echo "name"    > /sys/power/wake_lock ----- 申请一个锁

                 cat /sys/power/wake_lock -----查看系统的wake lock 情况

                 wake_unlock 同样。

 

         3)  echo 15 > /sys/module/wakelock/parameters/debug_mask   ------------

               这样wakelock的驱动会把每次的wakelock操作都打印在console上,对于调试为什么suspend不下去这类的问题很有用。如下所示:

               [ 1062.912297] wake_lock: mmc_delayed_work, stop expire timer
               [ 1062.922395] wake_unlock: mmc_delayed_work, start expire timer, 990
               [ 1062.931174] wake_lock: event0-79, start expire timer, 989
               [ 1062.933710] wake_lock: event0-79, start expire timer, 989
               [ 1062.939081] wake_lock: event0-79, start expire timer, 989
               [ 1062.961143] wake_lock: event0-79, start expire timer, 986

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新手机没有微信怎么办 新手机登陆微信怎么办 新号码被注册过怎么办 微信注册不了怎么办啊 苹果4铃声不响怎么办 苹果6黑屏没反应怎么办 苹果7卡机黑屏了怎么办 苹果7手机铃声小怎么办 支付宝发现套现怎么办 空调滴水管断了怎么办 地漏下水管断了怎么办 脸上长白色糠疹怎么办 腋下长白色的毛怎么办 饥荒电羊死光了怎么办 6s储存空间虚满怎么办 大胸下垂穿婚纱怎么办 美团签约成功后怎么办 拍婚纱照笑不出来怎么办 长得丑拍婚纱照怎么办 失恋了怎么办才能最快走出来 眼镜大了往下掉怎么办 眼镜带着往下掉怎么办 眼镜腿松了怎么办妙招 眼镜框大了总掉怎么办 吃不下饭恶心想吐怎么办 买到苹果翻新机怎么办 欠装修款不给怎么办 老板欠工资跑了怎么办 挖机老板欠工资怎么办 欠工程款耍赖不给怎么办 辞工后不给工资怎么办 工伤仲裁后不给怎么办 离职后不给工资怎么办 离职了不发工资怎么办 饭店欠工资不给怎么办 单位欠工资不给怎么办 离职后工资不发怎么办 暑假工不给工资怎么办 暑假工工资不发怎么办 个人欠钱2万不还怎么办 快递发错地址了怎么办