Изменить: Уточненный вопрос основан на ответе CommonsWare
Мы планируем будильник через AlarmManager запускать каждые 60 секунд. Когда наше приложение убито, наши тревоги, похоже, больше не выполняются. Есть ли способ, чтобы эти аварийные сигналы сохранялись, даже когда приложение было убито вручную или системой?
Это проблема для нас, потому что у нас есть приложение-виджет, который отображает время. Это означает, что нам нужно обновлять время каждую минуту. Чтобы обойти 30-минутное ограничение на обновление метода onUpdate для AppWidgetProvider, мы используем AlarmManager. Обычно это работает очень хорошо, но некоторые пользователи сообщают о времени выхода из синхронизации. Поговорив с несколькими из них, мое подозрение в том, что наше приложение убивается вручную с помощью приложения-убийцы задач или Android сам убивает наше приложение.
Также приветствуются любые другие альтернативные решения проблемы с корнем (сохранение времени в синхронизации в виде виджета).
Вот код, который мы выполняем, чтобы запланировать наш будильник:
Intent intent = new Intent(UPDATE_TIME);
PendingIntent pIntent = PendingIntent.getBroadcast(ctx,
0 /* no requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT );
// get alarm params
Date d = new Date();
long timeTilMinuteChange = 60*1000-d.getSeconds()*1000;
long startTime = System.currentTimeMillis() + + timeTilMinuteChange;
AlarmManager am = (AlarmManager) ctx.getSystemService(Context.
am.cancel(pIntent);
am.set(AlarmManager.RTC, System.currentTimeMillis(), pIntent);
am.setRepeating(AlarmManager.RTC, startTime, 60000, pIntent);