android - 如何在待机模式下不让线程自行停止?

标签 android multithreading background

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

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

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

tnx

已解决:

我成功地通过使用 PowerManager 对象来实现这一点,该对象获取一个 PARTIAL_WAKE_LOCK,使 CPU 从 acquire() 到 release() 保持 Activity 状态。

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

最佳答案

我成功地通过使用 PowerManager 对象来实现这一点,该对象获取一个 PARTIAL_WAKE_LOCK,使 cpu 从 acquire() 调用到 release() 调用保持 Activity 状态。

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

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

关于android - 如何在待机模式下不让线程自行停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725711/

相关文章:

c++ - 使用 condition_variable 控制多线程流

android - 如果测试版 apk 比官方 apk 旧,测试版用户将获得哪个 apk?

multithreading - 如何搜索并行化的可能性?

c++ - QtConcurrent 与多线程的 QThread 的多线程性能

java - 如何将按钮背景更改为图像,然后在按下时返回默认按钮

android - ImageView的src和背景有什么区别

C++ 非阻塞异步定时器

android - 在运行时设置 Google Maps v2 API key

java - 如何根据感兴趣区域周围的设计去除图像的背景?

Android:居中对齐 ImageButtons