当我打开其他应用程序时,为什么ScheduledExecutorService会停止

时间:2014-09-15 08:42:48

标签: android android-intent android-fragments

我正在使用简单的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);
   }
 }}

1 个答案:

答案 0 :(得分:2)

ScheduledExecutorService在与您的应用程序相同的进程ID上运行,即只要您的应用程序存在,它就会绑定到live。您应该使用不同的方法来保持ScheduledExecutorService活着,例如从Service启动它或使用其他独立的预定方法,例如AlaramManager

相关问题