2012-04-23 3 views
3

나는 조금 문제가있다 ... 더 많은 것보다 나는 몇 가지 팁과 예제가 필요하다. 나는 2 개의 문자열의 비교를 실행해야하는데, 이것들 중 하나는 장치의 현재 날짜에서 파생된다. , 다른 하나는 내가 쓰는 날짜입니다. 그래서이 비교는 언제든지 이루어질 수 있습니다 .. 이 비교는 true이면 다양한 명령을 실행합니다.안드로이드 AlarmManager 서비스

나는 내가 필요로하는 비교 존재하는 루프를 하나 개의 서비스에서이 서비스에 호출하는 알람 관리기를 .. 만든

private static final int EXEC_INTERVAL = 10 * 1000; 

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); 
    pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); 

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.add(Calendar.SECOND, 10); 

      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), EXEC_INTERVAL, pendingIntent); 

제가 무엇을해야 할 방법 더 나은 무엇입니까?

나는 이것을 사용합니까? 또는 BroadcastReceiver가 필요합니까?

몇 가지 예를 들어 주시면 감사하겠습니다. 미리 감사드립니다!

답변

3

"MyAlarmService"에서 매 10 초마다 테스트를하고 있습니다. 맞습니까?

그런 경우라면 AlarmManager가 아닌 Handler를 사용하는 것이 좋습니다. 안드로이드 문서 (http://developer.android.com/reference/android/app/AlarmManager.html)에 따르면, 당신은 타이밍 작업을 처리기를 사용해야합니다.

게다가 테스트를 실행할 때마다 서비스를 시작하지 않아도됩니다. 서비스는 계속해서 시작해야하는 것이 아니며, 테스트 코드를 반복에 넣고 싶을 수도 있으며 실제로 필요할 때만 서비스를 시작합니다. http://www.vogella.com/articles/AndroidPerformance/article.html

당신이 할 일은 다음과 같습니다 :

처리기를 사용하는 예에 관해서는

, 여기 저기 튜토리얼입니다

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { /* comparison work */ }, EXEC_INTERVAL); 
+0

덕분에 많은,하지만 난 루프도 장치가있는 경우 실행이 필요 절전 모드로 전환됩니다. – Tony

+0

당신은 무엇을 의미합니까? 당신은 테스트 코드를 반복 할 수 있습니다. – Tony