我正在使用简单的ScheduledExecutorService实现,一切正常。但是当我打开其他应用程序,如谷歌浏览器或游戏我的应用程序调度程序停止和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);
}
}}
答案 0 :(得分:2)
ScheduledExecutorService
在与您的应用程序相同的进程ID上运行,即只要您的应用程序存在,它就会绑定到live。您应该使用不同的方法来保持ScheduledExecutorService
活着,例如从Service
启动它或使用其他独立的预定方法,例如AlaramManager
。