我正在使用简单的 ScheduledExecutorService 实现,一切工作正常。但是当我打开其他应用程序(例如 google chrome 或游戏)时,我的应用程序调度程序停止并且 android 调试控制台变为空。 顺便说一句 onPause 和 onStops 方法我启动 beepForAnHour() 方法。
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep");
};
final ScheduledFuture beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}}
最佳答案
ScheduledExecutorService
与您的应用程序在相同的进程 ID 上运行,即只要您的应用程序存在,它就绑定(bind)存在。您应该使用不同的方法来保持 ScheduledExecutorService
Activity ,例如从 Service
启动它或使用其他独立的计划方法,例如 AlaramManager
。
关于android - 为什么当我打开其他应用程序时 ScheduledExecutorService 会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25843982/