1

我想运行一个线程在后台做一些工作(从一个获得唤醒锁的服务)。在我的线程完成工作后,它将停止服务。

我的担忧是:

1-我需要在服务中启动的线程中要求唤醒锁吗?

2-系统可以在让我的服务运行的同时杀死我的线程吗?

3-如果是2,我怎么能停止我的服务(我可以给服务一个超时时间,让它在它之后死亡)

4

1 回答 1

2
  1. 据我了解,WakeLocks 适用于 Android 组件(例如服务、活动等)及其所有相关线程。因此,您不必在线程中获取新的唤醒锁。您可以通过传递获取的锁并从启动的线程调用 isHeld 来证明这一点。

  2. 您应该考虑部分唤醒锁,这将只涉及保持 CPU 运行,而不管屏幕或键盘活动如何。由于这是一项服务,我假设您不在乎屏幕是否保持打开状态。

请注意,它在此处声明:如果您持有部分唤醒锁,CPU 将继续运行,无论任何定时器如何,甚至在用户按下电源按钮后也是如此。在所有其他唤醒锁中,CPU 将运行,但用户仍然可以使用电源按钮使设备进入睡眠状态。

编辑:此外,即使您可以按照建议的方式进行操作,最好在子线程中获取和释放唤醒锁以消耗电池电量。如果您需要使用 WiFi 进行这项工作,则可能还需要 WiFiLock。

于 2012-01-25T21:51:29.167 回答