Это очень глупый вопрос, и я до сих пор не могу понять, как работает AlarmManager
в Android. Предположим, я хочу запланировать повторяющуюся задачу каждые полчаса. Я хочу запланировать его на активность onCreate()
. Я делаю что-то вроде этого:Расписание AlarmManager Тревога при запуске приложения
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_HALF_HOUR,
AlarmManager.INTERVAL_HALF_HOUR, alarmIntent);
}
Теперь мой вопрос, как же ОС знает, что этот сигнал уже запланированную? Я имею в виду, что это не планирование нового при каждом создании активности, не так ли? В противном случае, после 10 запусков активности, я получаю сигнал тревоги каждые три минуты, а не полчаса. Пожалуйста, любой гуру Android, объяснение о проблеме.
Так что это просто пропустить планирование будильника или отменяет предыдущий? –
@LuciusHipan: Он должен отменить предыдущий сигнал тревоги, как если бы вы вызвали 'cancel()'. Поскольку 'cancel()' принимает 'PendingIntent' в качестве единственного идентификатора того, какой аварийный сигнал отменяется, может быть только один сигнал тревоги на' PendingIntent'. – CommonsWare
Итак, это значит, если у меня есть это в OnCreate(), запланированном на 10 минут, но я снова закрою приложение за 8 минут, будильник не будет запущен через 2 минуты? –