首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android PowerManager和Wakelock,帮我理解一下

Android PowerManager和Wakelock,帮我理解一下
EN

Stack Overflow用户
提问于 2011-12-31 15:46:00
回答 2查看 2.7K关注 0票数 0

因此,我正在查看PowerManager以防止手机进入睡眠状态。

两个问题:

1)我的手机当前设置为X秒后关闭显示器,PowerManager.Wakelock函数是否会覆盖此设置?

2)我的手机有一个顶部的按键,可以用来关闭显示屏,或关闭手机。PowerManager.WakeLock是否也会覆盖此功能?

欣赏洞察力

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-31 17:05:24

  1. 我不确定,但我想是的。我很难在源代码中找到这个功能,
  2. 在PowerManager.java goToSleep(time)中有一个函数。此函数仅调用PowerManagerService goToSleepLocked的方法:

private void goToSleepLocked(long time,int reason) { if (mLastEventTime <= time) { mLastEventTime = time;//取消所有唤醒锁mWakeLockState = SCREEN_OFF;int N= mLocks.size();int numCleared = 0;boolean proxLock = false;for (int i=0;i

所以你可以看到在这个方法中所有的wakelock都被关闭了。

goToSleep方法只能由系统组件调用(受签名权限保护)。我想它是在你按下电源按钮的时候调用的。所以它重写了所有的唤醒锁。

票数 1
EN

Stack Overflow用户

发布于 2012-06-01 16:14:47

1)是的,当然!如果屏幕处于打开状态,并且您获取了wakelock,则即使在屏幕超时后,屏幕仍将保持打开状态。如果屏幕关闭,而你想要打开它,那么你必须像这样创建wakelock实例并获取。

代码语言:javascript
复制
   PowerManager.WakeLock wl = pm.newWakeLock(
   PowerManager.SCREEN_DIM_WAKE_LOCK
  | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
  wl.acquire();

这将强制打开您的屏幕。

2)任何wakelock都不能覆盖该功能。尽管我不同意Yury的观点,但Top button只是关闭了屏幕,并没有调用goToSleep(long time)方法。因此,除非您关闭设备,否则不会释放部分唤醒

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8687022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档