我希望我的应用程序保持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" />在我天真的时候,我期望在获得锁的时候,屏幕会立即关闭,但什么也没有发生。我之前读过的帖子似乎从来没有克服过这个问题,有人成功了吗?还有什么我必须做的吗?
发布于 2013-01-24 01:41:02
以另一种方式在活动的onCreate方法中使用它会更有效:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);这是以高效的方式使用唤醒锁的更好方法。
发布于 2013-01-24 01:35:39
唤醒锁不能关闭屏幕。通常,当屏幕关闭时,应用程序会暂停,因为CPU处于休眠状态。如果你有PARTIAL_WAKE_LOCK,你的应用程序将继续运行,即使屏幕关闭(由于自动或手动睡眠),CPU也将处于活动状态。仅当您确实需要在关闭屏幕后继续处理数据时才使用此选项。您提到您关心的是最小化功耗,获取任何类型的唤醒锁都可能导致浪费电量。明智的做法是遵循来自PowerManager docs的警告。
此接口的使用将显著影响
设备的电池续航时间。除非您确实需要,否则不要获取PowerManager.WakeLocks,请尽可能使用最低级别,并确保尽快发布它们。
因此,评估一下为什么你认为你的任务需要一个唤醒锁是个好主意。如果你认为它太省电了,那它就不是。
https://stackoverflow.com/questions/14485456
复制相似问题