Я запрограммировал приложение с несколькими сигналами тревоги с помощью AlarmManager. У меня также есть метод, который отменяет все текущие/ожидающие тревоги. Он работает хорошо, однако, если пользователь закрывает приложение из ретентатов (тревоги все еще активны, как и предполагалось), мой метод отмены-тревоги больше не работает (приложение вылетает). Есть ли какие-либо решения? Как я могу отменить свои тревоги после того, как пользователь закрыл приложение?Как отменить будильник после закрытия приложения
Это то, что мои тревоги выглядит следующим образом:
ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
...
Intent intent = new Intent(this, AlertReceiver.class);
Long cal = new GregorianCalendar().getTimeInMillis() + sms_in_x_minutes * 60 * 1000;
PendingIntent i1 = PendingIntent.getBroadcast(this, intent_id++, intent, 0);
am.set(AlarmManager.RTC_WAKEUP, cal, i1);
intentArray.add(i1);
Это то, что мой отмены, метод выглядит следующим образом:
private void cancelAlarms(){
if(intentArray.size()>0){
for(int i=0; i<intentArray.size(); i++){
am.cancel(intentArray.get(i));
}
intentArray.clear();
}
}
Я думаю, что intentArray
и am
пустуют после того как я закрыть приложение , а PendingIntents
не сохраняются. Но я не знаю, как обойти это.
Вы пробовали Android [Life Cycle] (http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle), вы должны иметь возможность отменить будильник 'onDestroy', однако я ' m не уверен, как это будет работать в ситуации с низкой памятью. – hoss
Yea as Pier предложил мне использовать onDestroy, и это нормально. Это предотвратит все мои аварии. В идеале я хотел был бы отменить все активные тревоги после того, как я закрою и запустим приложение. Может быть, это просто невозможно. Спасибо большое! – haby123
Приложение никогда не нуждается в настройках нескольких тревог. Требуется только самое раннее. Когда это срабатывает, ваше приложение может затем настроить следующее самое раннее, как первую задачу, которую он выполняет. Это упрощает отслеживание ваших сигналов тревоги. Это также упрощает настройку их после перезагрузки, так как аварийные сигналы не выдерживают перезагрузки. – Kuffs