Android电源管理
来源:互联网 发布:java开源运维监控平台 编辑:程序博客网 时间:2024/06/17 20:28
转:http://blog.csdn.net/qianjin0703/article/details/6676567
Android电源管理方面网上资料比较多,这里就梳理下Android源码的线索,关注wake_lock和early_suspend。
使一个应用程序不进入睡眠,须在上层申请一个wakelock锁,并对该锁进行持有。在acquire()和release()间,进程保持running状态。持有锁acquire()经过framework层PowerManagerService.java到抽象层Power.cpp,实质就是在/sys/power/wake_lock里写入锁的名字,释放锁release()实质就是在/sys/power/wake_unlock里写入锁的名字。经Linux文件系统,内核对其上锁或解锁,即wake_lock()或wake_unlock(),即不准suspend或进入suspend。
搞清楚has_wake_lock_locked(),返回值>0说明有超时锁,需要在超时以后进入suspend;返回值=0说明没有锁,直接进入suspend;返回值<0说明持有永久锁,这也是最常见的一种用法,系统无法进入suspend。
使系统唤醒或休眠,上层分别使用userActivity和goToSleep,实质就是往/sys/power/state里写入on或mem,底层通过文件系统最终调用request_suspend_state()
0 0
- Android电源管理
- android电源管理
- Android 的电源管理
- [转] Android电源管理
- [转] android电源管理
- Android WiFi 电源管理
- Android电源管理
- Android 的电源管理
- Android电源管理概念
- Android电源管理
- Android电源管理
- Android 电源管理
- Android的电源管理
- Android 电源管理
- Android 电源管理
- android电源管理
- Android电源管理
- android电源管理
- Android应用程序的目录结构
- HDU3629(凸四边形的个数)
- c语言练习 7-2. A+B和C
- Android Vold架构
- [day 0]判断素数2014.7.13
- Android电源管理
- Xcode5 运行程序 提示IOS 模拟器未能安装此应用程序
- extern“c”
- Ubuntu下的用户和权限(三)
- NYOJ 47 过河问题
- Android多媒体浅析
- 【编译原理】自下而上的语法分析之LR分析法
- hdu 1087 Super Jumping! Jumping! Jumping!
- 复习:Java回调函数透彻理解