2

在我的应用程序中,我在与主线程(UI)不同的线程中创建了一项服务。然后,在服务中,我创建了 3 个无限期在后台执行的线程。但是一旦手机进入待机模式,这些线程就会暂停执行!

相反,如果我通过 USB 电缆将手机连接到电脑,我会看到线程正常工作,即使在待机模式下也不会暂停自己。

但是如何不让线程在正常执行中出现这种行为呢?

tnx

解决了:

我设法通过使用 PowerManager 对象简单地实现了这一点,该对象获取了一个 PARTIAL_WAKE_LOCK,使 cpu 从acquire() 到release() 保持活动状态。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
 wl.acquire();
   ..CPU will stay on during this section..
 wl.release();
4

1 回答 1

2

我设法通过使用 PowerManager 对象简单地实现了这一点,该对象获取了一个 PARTIAL_WAKE_LOCK ,使 cpu 从 acquire() 调用直到 release() 调用保持活动状态。

这样,即使手机进入待机模式,线程也一定会运行。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
 wl.acquire();
   ..CPU will stay on during this section..
 wl.release();
于 2012-05-24T14:37:46.303 回答