唤醒锁无法在 Android 上工作

Wakelock not working on Android

我正在做一个类似于 Runkeeper 的 Android 应用程序。当我启动应用程序时,我会为时钟启动一个线程,并且我还有 gps 的 onLocationChanged 更新。屏幕打开时一切正常,但是当屏幕关闭时,时钟线程停止。

我试过 PARTIAL_WAKE_LOCK 但没有任何反应。 这是清单中的代码。

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

这是代码

PowerManager.WakeLock wl;

并在 onCreate()

PowerManager pm=(PowerManager)this.getSystemService(Context.POWER_SERVICE);
    wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"my wakelock");
    wl.acquire();

也试过

PowerManager pm=(PowerManager)Context.getSystemService(Context.POWER_SERVICE);
    wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"my wakelock");
    wl.acquire();

我不知道为什么时钟线程在我 WAKE_LOCK 时停止。当我在 butttonlistener 中按下一个按钮时,时钟线程启动,如果这可以成为解释的一部分?大家有什么建议 谢谢

我认为您误解了唤醒锁的作用。当您的程序持有设备时,唤醒锁会保持设备处于活动状态(想想 CPU 运行)。以下是它不会做的一些事情:

  • 控制应用程序进程中任何线程的生命周期
  • 控制您的应用程序的生命周期!!

事实上,Android 绝对保证停止您的应用程序,最终,无论您做什么。发生这种情况时,您会断开与 PowerManager 的连接,并且您的唤醒锁会自动释放。

您可能需要 AlarmManager.