2010-11-01 6 views
3

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

я экспериментировал с таймерами и задачи таймера, но по какой-то причине это не похоже, не работает, когда я использую календарь класса Java с ним, как это:

Calendar c1 = Calendar.getInstance(); 
      c1.add(Calendar.SECOND, 30);  
    updateTimer.scheduleAtFixedRate(cleanCompletedCache, c1.getTimeInMillis(),hour); 

и от чего я чтение, Handlers не подходят для этой многопотоковой задачи. я должен был бы использовать диспетчер аварийных сигналов для этого, и почему этот код не будет выполнен правильно? спасибо

+0

У меня была аналогичная проблема, поэтому я просто использую следующий код, чтобы продолжать устанавливать новые вызовы в определенное время (SHORT_UPDATE_INTERVAL - это переменная, которую я создал не системную константу). \t \t timer.schedule (новый TimerTask() { \t \t @Override \t \t \t \t общественности недействительным запуска() { \t \t процедуры // вызов здесь \t \t \t TimerEvent(); \t \t} \t \t }, SHORT_UPDATE_INTERVAL); – Jim

+0

спасибо, проверит этот метод. но я думаю, что я также видел способ сделать это с обработчиками. Спасибо, в любом случае – irobotxxx

ответ

3

Вы хотите, чтобы AlarmManager и он установилRepeating или setInexactRepeating calls.

Там вы планируете намерение, которое должно быть доставлено в ваше приложение, и напишите приемник намерений для его обработки. Таким образом, активация вашего приложения полностью зависит от системы Android, и ваше приложение не нужно запускать в течение всего часа, он просто ждет активации.

Если по какой-то нечетной причине вам понадобится ваш код, запущенный между вызовами таймера, вам нужно сохранить фоновый сервис, но вы все равно будете использовать AlarmManager для пробуждения.

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