Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wakelock替代方案,正确使用-android_Android_Wakelock_Android Wake Lock - Fatal编程技术网

Wakelock替代方案,正确使用-android

Wakelock替代方案,正确使用-android,android,wakelock,android-wake-lock,Android,Wakelock,Android Wake Lock,我在服务中使用Wakelock,因为服务和handy必须始终工作。它工作得很好,但它很快就会耗尽电池电量 实际上,我的wakelock代码: public static PowerManager pm; public static PowerManager.WakeLock wl; wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag"); wl.acquire(); 如果服务关闭,我会这样做

我在服务中使用Wakelock,因为服务和handy必须始终工作。它工作得很好,但它很快就会耗尽电池电量

实际上,我的wakelock代码:

    public static PowerManager pm;
    public static PowerManager.WakeLock wl;
    wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
    wl.acquire();
如果服务关闭,我会这样做

    wl.release();
我认为这是一种方式,但不是最好的。还有一个问题——我可以用“我的标签”做什么。 也许你能帮我。谢谢。

正如医生所说:

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

所以,长时间使用WakeLock肯定会耗尽电池电量。没有解决办法!WakeLocks用于防止手机进入待机状态,它们使CPU保持开启状态!正如您所理解的,保持CPU开启会导致电池耗尽

我的建议是只有在需要的时候才获得wakelock,然后立即释放!如果你能告诉我们你的目标是什么,我们可以帮助你


“MyTag”仅用于调试内容。例如,如果您遇到异常,logcat会打印“MyTag”作为引起该异常的WakeLock的名称

谢谢,我开发了一个可以拍照的应用程序,并从Android平台注册了一些事件和意图。可能只有每小时注册一个事件,有时是每分钟注册一次,但如果我注册了一个事件,那么它必须工作,手持设备必须做出反应。我可以每隔15分钟使用Wakelock来激活它吗?设备显示器可以关闭/必须关闭一段时间后,摄像头必须处于活动状态。谢谢,我有答案。你检查过AlarmManager类了吗?这个类可以及时触发事件。您可以设置触发事件的时间和操作。你甚至可以让它们重复。一个技巧可能是:例如,在15分钟内设置闹钟,当你触发事件时,你获得wakelock等等。例如,我使用耳机输入,如果有人把耳机放在设备中,我想做些什么,为此我使用广播接收器。但这必须一整天、每分钟、每小时都有效。然后使用AlarmManager类设置报警。也许我可以每隔15分钟设置一个闹钟来唤醒你?或者,如果我定期设置一个闹钟,例如每2分钟一次,而不使用wakelock,那么在整个时间内都会很方便?我可以请求wakelock状态吗?是以编程方式激活还是非激活?如果在事件中将接收器注册到插入式耳机,则无需使用WakeLock即可达到目的。只有在之后必须执行长时间操作时,才必须使用Wakelocks。我可以请求wakelock状态吗?以编程方式是活动的还是非活动的?但也许我在几个小时后就有了第一个意图,而不是cpu可能在睡觉,而我没有得到一些信息。长时间意味着什么,在这之后cpu停止?谢谢你的快速回复。