2013-08-05 2 views
0

나는 3 분마다 웹 서비스를 호출하고 싶다는 점에서 하나의 응용 프로그램을하고 있으며, 장치가 시간 초과되지 않았을 때 모든 것이 잘 작동합니다. 그러나 시간이 갈수록 나는 타이머가 작동을 멈췄다 고 생각합니다.타이머 서비스가 안드로이드 작동하지 않습니다

이 문제를 해결할 수있는 대체 방법은 무엇입니까? 나는 3 분 간격 어쨌든 간격을 원하고 그것의 타이머를 사용할 필요가 없다, 나는 타이머의 대체로 무엇이든 사용할 수있다.

답변

1

사용 RepeatAlarm : 서비스 클래스에서

private PendingIntent pendingIntent=null; 
    static Intent i; 
    public static AlarmManager manager ; 

pendingIntent = PendingIntent.getService(con, 0, 
         intent, 0); 
       Calendar cal = Calendar.getInstance(); 
       manager = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); 
       manager.setRepeating(AlarmManager.RTC_WAKEUP, 
         cal.getTimeInMillis(), (3*60*1000), 
         pendingIntent); 
+0

서비스'PendingIntent'에서'AlarmManager'' _WAKEUP' 알람을 사용하지 마십시오. '_WAKEUP'으로 인한 깨우기에 대한 유일한 보증은 * 방송 *'PendingIntent'를 사용하는 것입니다 -이 경우'AlarmManager'는'onReceive()'가 완료 될 때까지 깨어있게 할 것을 보장합니다. – CommonsWare

1

3 분마다 웹 서비스를 호출하고 싶다는 점에서 하나의 응용 프로그램을 만들고 있습니다. 장치가 시간 초과되지 않았을 때 모든 것이 잘 작동합니다. 그러나 시간이 갈수록 나는 타이머가 작동을 멈췄다 고 생각합니다.

처음에는 아주 좋은 해결책이 아니 었습니다. 항상 시계 틱을 보면서 메모리 주위에 매달려있는 서비스를하지 마십시오.

_WAKEUP 스타일 알람 및 either WakefulBroadcastReceiver 또는 my WakefulIntentService과 함께이 문제

Use AlarmManager를 해결하는 다른 방법은 무엇입니까.

1

private static boolean isRunning = false; 
    private Timer timer = new Timer(); 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.i("SyncService", "Service Started."); 

    int interval = 180000;// 3minutes 
    timer.scheduleAtFixedRate(new TimerTask() { 
     public void run() { 
      //your process 
     } 
    }, 0, (long) interval); 
    isRunning = true; 
} 

희망이 당신에게 솔루션을 제공 할 것입니다.

관련 문제