My ReminderService использует AlarmManager, чтобы информировать пользователя о предстоящем событии в определенное время. Возможно ли, что AlarmManager сообщает тот же сервис (ReminderService), или мне нужно запустить другой сервис, чтобы поймать ожидающее намерения? До сих пор этот механизм выглядит как этотУстановите будильник в сервисе и получите обратный вызов в той же службе
public class ReminderService extends Service {
// ...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// ..
/* When the alarm goes off the NotifyService will be started. Is it possible to inform **this**
service (ReminderService) and to handle the alarm? */
Intent alarmIntent = new Intent(this, NotifyService.class);
alarmIntent.putExtra(TodoTask.PARCELABLE_KEY, task);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, alarmIntent, 0);
Calendar calendar = Calendar.getInstance();
Date date = new Date(reminderTimeStamp*1000);
calendar.setTime(date);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
}
Отлично, но означает ли это, что на самом деле я не могу хранить данные в своем сервисе, потому что всегда возможно, что служба будет убита. Поскольку мне нужно делать некоторые запросы к базе данных, нужно ли их повторять каждый раз в onStartCommand? – null
Служба получает 'onCreate()' и 'onDestroy()' обратные вызовы, которые вы можете использовать для проверки состояния. Так что да, если вам нужны данные, необходимые для загрузки и сохранения. – Budius