首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerManager newWakeLock.acquire()未按预期工作

PowerManager newWakeLock.acquire()未按预期工作
EN

Stack Overflow用户
提问于 2013-01-24 01:13:49
回答 2查看 2.8K关注 0票数 2

我希望我的应用程序保持CPU运行,但关闭屏幕以最大限度地减少功耗。

之前关于这个主题的帖子建议了以下方法:

代码语言:javascript
复制
    mPm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock =  mPm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.WAKE_LOCK_TAG);

    mWakeLock.acquire();    //keep CPU running, turn screen off

代码语言:javascript
复制
    <uses-permission android:name="android.permission.WAKE_LOCK" />

在我天真的时候,我期望在获得锁的时候,屏幕会立即关闭,但什么也没有发生。我之前读过的帖子似乎从来没有克服过这个问题,有人成功了吗?还有什么我必须做的吗?

EN

回答 2

Stack Overflow用户

发布于 2013-01-24 01:41:02

以另一种方式在活动的onCreate方法中使用它会更有效:

代码语言:javascript
复制
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

这是以高效的方式使用唤醒锁的更好方法。

票数 3
EN

Stack Overflow用户

发布于 2013-01-24 01:35:39

唤醒锁不能关闭屏幕。通常,当屏幕关闭时,应用程序会暂停,因为CPU处于休眠状态。如果你有PARTIAL_WAKE_LOCK,你的应用程序将继续运行,即使屏幕关闭(由于自动或手动睡眠),CPU也将处于活动状态。仅当您确实需要在关闭屏幕后继续处理数据时才使用此选项。您提到您关心的是最小化功耗,获取任何类型的唤醒锁都可能导致浪费电量。明智的做法是遵循来自PowerManager docs的警告。

此接口的使用将显著影响

设备的电池续航时间。除非您确实需要,否则不要获取PowerManager.WakeLocks,请尽可能使用最低级别,并确保尽快发布它们。

因此,评估一下为什么你认为你的任务需要一个唤醒锁是个好主意。如果你认为它太省电了,那它就不是。

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

https://stackoverflow.com/questions/14485456

复制
相关文章

相似问题

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