2014-09-15 2 views
2

간단한 ScheduledExecutorService 구현을 사용하고 있으며 모든 것이 잘 작동합니다.하지만 Google 크롬 또는 게임과 같은 다른 응용 프로그램을 열면 응용 프로그램 스케줄러가 중지되고 Android 디버그 콘솔이 비어 있습니다. Btw onPause 및 onStops 메서드 beepForAnHour() 메서드를 시작합니다. 즉 응용 프로그램, 같은 프로세스 ID에다른 응용 프로그램을 열었을 때 ScheduledExecutorService가 멈춘 이유

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

답변

2

ScheduledExecutorService 실행은이 한 응용 프로그램의 삶으로 살고 결합된다. 다른 접근법을 사용하여 ScheduledExecutorService을 계속 유지하거나 Service에서 시작하거나 AlaramManager과 같은 다른 독립적 인 예약 된 방법을 사용해야합니다.

+0

그래서 ScheduledExecutorService없이 AlarmManager에서 예약 된 메소드 (실행하려는 코드의 평화를 의미)를 실행해야합니까? – user3385530

관련 문제