安卓权限“Wake Lock”的作用是什么?

37

何时以及为什么使用 Android 权限 <uses-permission android:name="android.permission.WAKE_LOCK" />。请提供关于 Wake Lock 的示例代码。

5个回答

28
WakeLock是一种保持设备开启的机制,如这里这里所述。例如,在下载互联网上的文件时,需要在设备休眠时执行操作。
只有在真正需要时才应使用Wakelocks。原因是它们会消耗更多的电池电量,如果你的应用程序出现了bug并无法在需要时释放它们,它将继续消耗设备的电池电量。甚至有一些应用程序可以检测此类有问题的应用程序(例如"wakelock detector")。
对于那些希望屏幕保持开启的人,一个小提示:您不需要(也不应该需要)wakeLock权限。相反,您应该只需在当前Activity的布局中设置 "android:keepScreenOn="true""即可。更多相关信息请参见演讲《编码为生命——电池寿命》(这里),演示文稿在此

另一种编程方式保持屏幕常亮是通过 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);,如 https://developer.android.com/training/scheduling/wakelock 所示。 - mtsahakis

17

您可以使用wakelock来保持屏幕开启 - 您可以在此代码中看到示例。

如果您需要更多信息,则必须说明您的问题。


感谢回复。我认为这个唤醒锁用于在从服务器获取大量数据时使设备屏幕保持开启状态。我说得对吗? - java dev
那可能是该函数的主要用途,是的。除此之外,似乎唤醒锁定不应该经常使用,因为它会很大程度地消耗手机电力。 - Loyalar
1
实际上,在大多数情况下,不应该使用wakelock来保持屏幕常亮。请参见我在下面的帖子:https://dev59.com/smUp5IYBdhLWcg3wXGkZ#22294934 - android developer

1
当设备进入睡眠状态时,即用户不在时,唤醒设备,通俗易懂地说就是屏幕锁定。

1

唤醒锁定是一种机制,用来表示您的应用程序需要设备保持开启状态。

使用 WakeLock 的任何应用程序都必须在应用程序清单的 <uses-permission> 元素中请求 android.permission.WAKE_LOCK 权限。通过调用 newWakeLock(int, String) 来获取唤醒锁定。


-15

在清单文件中:

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

44
这是什么样的回答? - Xenolion
7
这个回答是一个笑话,它获得了11个赞同也是一个笑话。 - Rushikant Pawar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接