2013-06-10 4 views
1

У меня есть работа в фоновом режиме.
Я хочу позвонить этой службе через определенный интервал.
, если пользователь предоставляет значения 10, 20, 30, чем услуга должна звонить через 10 мин, 20 мин и 30 мин.Служба звонков в определенное время в android

Как я могу сделать что-то выше?

+0

Используйте будильник, чтобы запустить службу. Найдите диспетчера аварийных сигналов, и вы получите множество примеров. – Tarun

+0

, но диспетчер аварийных сигналов дважды. сначала, когда я устанавливаю будильник и в другое время после задержки. Я хочу позвонить только один раз. то есть, если у меня есть вызов setalarm в 10:20:25 и укажите время в 5 секунд, чем он срабатывает два раза в 10:20:25 и 10:20:30. – dev

+0

Отправьте свой код тревоги. Вы можете проверить http://stackoverflow.com/a/17017471/786337 – Tarun

ответ

1

AlarmManager поможет :)

Это позволяет настроить расписание для запуска компонентов вашего приложения в течение заданного интервала времени

Update

Чтобы создать экземпляр AlarmManager, который будет идти в игру в определенный период после его создания, настройте его с помощью метода setRepeating() и параметра PERIOD, добавленного к SystemClock.elapsedRealime():

AlarmManager mgr = (AlarmManager)getSystemService(ALARM_SERVICE); 
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, 
        SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi); // Here PERIOD is a value specified by you as PendingIntent object 
+0

, но диспетчер тревог дважды звонит. сначала, когда я устанавливаю будильник и в другое время после задержки. Я хочу позвонить только один раз. то есть, если у меня есть вызов setalarm в 10:20:25 и укажите время в 5 секунд, чем он срабатывает два раза в 10:20:25 и 10:20:30. – dev

+0

Он не будет вызываться дважды, если вы настроите его с помощью 'setRepeating()' с указанным параметром 'triggerAtMillis', который может быть смещением с момента создания вашего' AlarmManager' –

+0

См. Мой ответ на вопрос. Вы также должны рассмотреть рекомендации из официальной документации о запуске объектов «Сервис», в которых говорится, что >> Если ваш приемник сигналов тревоги называется Context.startService(), возможно, что телефон будет спать до запуска запрошенной службы. Чтобы этого не произошло, вашему BroadcastReceiver и сервису потребуется реализовать отдельную политику блокировки слежения, чтобы убедиться, что телефон продолжает работать до тех пор, пока услуга не станет доступной. –

0

Вы можете установить Alarm, чтобы иметь намерение срабатывать с определенным интервалом. Вы также можете установить неточный сигнал тревоги, если не критично, что будильник работает в точное время.

+0

, но диспетчер тревог дважды звонит. сначала, когда я устанавливаю будильник и в другое время после задержки. Я хочу позвонить только один раз. то есть, если у меня есть вызов setalarm в 10:20:25 и укажите время в 5 секунд, чем он срабатывает два раза в 10:20:25 и 10:20:30 – dev

0
Calendar startTime = Calendar.getInstance(); 
     startTime.set(Calendar.HOUR_OF_DAY, 10); 
     startTime.set(Calendar.MINUTE, 20); 
     startTime.set(Calendar.SECOND, 25); 

     Intent dailyQuotes = new Intent(getActivity(), DailyQuotesService.class); 
     AlarmManager am = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE); 
     PendingIntent pi = PendingIntent.getService(getActivity(), 0, dailyQuotes, 0); 
     am.setInexactRepeating(AlarmManager.RTC_WAKEUP, startTime.getTimeInMillis(), 30000, pi); 

вот мой код, и он вызывает мое обслуживание точно в указанное время. и затем повторяется каждые 30 секунд.

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