2012-04-23 3 views
3

У меня есть небольшая проблема ... больше, чем что-либо еще Мне нужны советы и примеры. Мне нужно выполнить сравнение 2 строк, одна из которых получена с текущей даты на устройстве , другой - дата, которую я пишу. поэтому это сравнение можно сделать в любое время. это сравнение если true пробег различная команда.Служба Android AlarmManager

Я создал 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

Насколько я могу судить, вы проводите тест на время каждые 10 секунд в «MyAlarmService», правильно?

Если это так, я предлагаю использовать Handler, а не AlarmManager. Согласно документации по android (http://developer.android.com/reference/android/app/AlarmManager.html), вы должны использовать Handler для выполнения операции синхронизации.

Кроме того, вам может не понадобиться запускать службу каждый раз, когда вы запускаете тест. Сервис - это не то, что вы должны постоянно запускать, вы можете поставить тестовый код в цикл и запустить службу только тогда, когда вам это действительно нужно.

Что касается примеров использования обработчика, есть учебник здесь: http://www.vogella.com/articles/AndroidPerformance/article.html

Что вы должны сделать, это:

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

Спасибо большое, но мне нужно цикл выполняется, даже если устройство переходит в спящий режим. – Tony

+0

Что вы имеете в виду: вы можете поставить тестовый код в цикл? – Tony

 Смежные вопросы

  • Нет связанных вопросов^_^