Используя Alarmmanager для запуска сервиса в определенное время

Я искал много мест, но не мог найти чистое последовательное объяснение того, как запустить сервис (или если это не возможно затем действие) в определенное время ежедневно с помощью AlarmManager??

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

Calendar cal = Calendar.getInstance();
Calendar cur_cal = Calendar.getInstance();
cur_cal.setTimeInMillis(System.currentTimeMillis());
Date date = new Date(cur_cal.get(Calendar.YEAR), cur_cal.get(Calendar.MONTH), cur_cal.get(Calendar.DATE), 16, 45);
cal.setTime(date);
Intent intent = new Intent(ProfileList.this, ActivateOnTime.class);
intent.putExtra("profile_id", 2);
PendingIntent pintent = PendingIntent.getService(ProfileList.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
System.out.println("The alarm set!!");

я попробовал этот код для активации предупреждения в 4,45..., но не увольнение сервиса... я должен поддерживать процесс в рабочем состоянии?? M я делающий что-то не так???

Еще одна вещь, мой сервис отлично выполняется в случае, если я использую следующий код:

long firstTime = SystemClock.elapsedRealtime();
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 30*1000,pintent);
27
задан JaVadid 16 June 2010 в 11:57
поделиться

1 ответ

Привет друзья, После долгих поисков и со ссылкой на вопрос "Pentium10" по той же теме мне удалось заставить его работать. Хотя я все еще не могу понять, почему концепция "дата" и объект Calendar(non GregorianCalendar), которые я указал в вопросе, не работают правильно.

Calendar cur_cal = new GregorianCalendar();
cur_cal.setTimeInMillis(System.currentTimeMillis());//set the current time and date for this calendar

Calendar cal = new GregorianCalendar();
cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR));
cal.set(Calendar.HOUR_OF_DAY, 18);
cal.set(Calendar.MINUTE, 32);
cal.set(Calendar.SECOND, cur_cal.get(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND));
cal.set(Calendar.DATE, cur_cal.get(Calendar.DATE));
cal.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH));
Intent intent = new Intent(ProfileList.this, IntentBroadcastedReceiver.class);
PendingIntent pintent = PendingIntent.getService(ProfileList.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
36
ответ дан 28 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: