2

我希望我的应用程序保持 CPU 运行,但关闭屏幕以最大程度地减少电力浪费。

以前有关此主题的帖子建议采用以下方法:

    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

清单包含:

    <uses-permission android:name="android.permission.WAKE_LOCK" />

在我的纯真中,我预计在获得锁定后屏幕会立即关闭,但什么也没发生。我读过的早期帖子似乎从未解决过这个问题,有人成功了吗?还有什么我必须做的吗?

4

2 回答 2

3

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

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

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

于 2013-01-23T17:41:01.670 回答
2

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

使用此 API 将显着影响设备电池寿命。不要获取 PowerManager.WakeLocks,除非你真的需要它们,尽可能使用最低级别,并确保尽快释放它们。

因此,最好评估一下您为什么认为您的任务需要唤醒锁。如果您认为它太省电,那不是。

于 2013-01-23T17:35:39.000 回答