android休眠唤醒流程2
android系统一段时间没有操作,
屏幕(screen)将从高亮(bright)变为暗淡(dim),如果再过段时间还是没有操作,屏幕(screen)从暗淡(dim)变为关闭(off).这时,系统将进入休眠.
而对于某些需要保持系统唤醒甚至屏幕唤醒的应用(比如视频播放器和音乐播放器)来说,就必须要有一个机制,使得系统不进入休眠状态,设置保持屏幕亮屏状态.
wakelock即用来实现以上目的
先上网上偷来的一副图,说一下android系统的整个电源管理流程图
接下来对每一个模块具体分析:
powermanager
对应文件是android/frameworks/base/core/java/android/os/PowerManager.java
在Android中应用程序并不是直接同PowerManagerService交互的,而是通过PowerManager间接地与PowerManagerService打交道。
此文件定义了一个powermanager类.
主要实现了
1,wakelock的申请与释放
public WakeLock newWakeLock(int flags, String tag)
2,系统延时进入休眠
public void userActivity(long when, boolean noChangeLights)
3,系统强制休眠
public void goToSleep(long time)
4,屏幕亮度设置
public void setBacklightBrightness(int brightness)
5,屏幕状态查询
public boolean isScreenOn()
6,系统重启
public void reboot(String reason)
细节
wakelock的申请与释放
{@samplecode
*PowerManager pm = (PowerManager)mContext.getSystemService(
* Context.POWER_SERVICE);
*PowerManager.WakeLock wl = pm.newWakeLock(
* PowerManager.SCREEN_DIM_WAKE_LOCK
* | PowerManager.ON_AFTER_RELEASE,
* TAG);
*wl.acquire();
* // ...
*wl.release();
一共有如下几个flag来进行不一样的唤醒方式.可以根据需要设置
Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* can-off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
PROXIMITY_SCREEN_OFF_WAKE_LOCK on 距离传感器时关闭 off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright
ACQUIRE_CAUSES_WAKEUP 确保wakelock,主要用于视频播放器
ON_AFTER_RELEASE = 0x20000000 release后倒计时,关闭屏幕
...
userActivity的作用:
使系统从其他状态进入全部打开状态,比如从暗屏(dim)切换到亮屏,并重置倒计时计数器
(待续)
最新文章
- c++面试常用知识(sizeof计算类的大小,虚拟继承,重载,隐藏,覆盖)
- Eclipse侧边栏Outline设置字体
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件Web业务平台
- JQuery Mobile 页面参数传递(转)
- form表单验证2
- http://my.oschina.net/u/2007041/blog/508520
- jquer ajax
- 解决在管理wordpress时权限不足的问题
- javascript 笔试题之删除数组重复元素
- AJAX封装(IE)
- 给HttpClient添加Socks代理
- JS的replace默认只替换第一个匹配项
- TestNG失败自动截图
- MyBatis入门(一)SqlSessionFactory
- JS(JAVASCRIPT)
- C# 代码中调用 Javascript 代码段以提高应用程序的配置灵活性(使用 Javascript .NET 与 Jint)
- shell脚本小集锦
- InputMethodManagerService处理输入法——监听APK变动
- 小米路由Mini刷Breed, 潘多拉和LEDE
- FileStream对文本进行读写操作