在待机模式下如何让Thread自行停止?

时间:2012-05-23 18:25:17

标签: android multithreading background

在我的应用程序中,我在与主要(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();

1 个答案:

答案 0 :(得分:2)

我设法通过使用PowerManager对象来获得此功能,该对象获取PARTIAL_WAKE_LOCK,使得从acquire()调用中的cpu保持活动状态直到release()调用。

这样即使手机进入stanbdy模式,线程肯定也在运行。

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();