Ответ 1
Прежде всего, небольшое руководство по доступу к ранее созданным аварийным сигналам:
Вы можете различать сигналы тревоги, создавая каждый с уникальным идентификатором, например:
Intent intent = new Intent(this, AlarmReceiverActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,UNIQUE_ID_GOES_HERE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis ,pi);
Если вы хотите получить доступ к этому сигналу тревоги, вам необходимо создать тот же PendingIntent с тем же уникальным идентификатором. Например, следующее будет доступно только для сигнала тревоги, созданного с помощью идентификатора PendingIntent 1234. Затем он отменяет предыдущий и reset его.
Intent intent = new Intent(this, AlarmReceiverActivity.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 1234, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis ,pi);
Идея проста. Следите за идентификатором, а затем используйте их для доступа к их соответствующим аварийным сигналам. Если вы создаете несколько аварийных сигналов с одинаковым идентификатором, последний из них отменяет предыдущий.
Приступая к вашей основной проблеме, вместо того, чтобы проверять, активен ли ваш будильник при каждом запуске приложения, просто переустановите его в методе Activity onCreate()
. с тем же PendingIntent, как я описал выше. Это сэкономит вам все хлопоты на проверку того, установлен ли будильник ранее или нет. Поскольку ваша цель состоит в том, чтобы поддерживать тревогу, не повредить ранее установленную настройку каждый раз при запуске приложения. Просто убедитесь, что вы используете один и тот же идентификатор для создания вашего PendingIntent.
Не забудьте проверить, прошло ли время вашего будильника или нет, чтобы не пытаться установить будильник в течение последнего времени, что немедленно вызовет его.
Рассмотрим другой случай: при выключении устройства все ваши аварийные сигналы будут отменены. Это не дает вам никакого выбора, кроме как снова установить их при перезагрузке. Для этого вам нужно будет использовать BroadcastReceiver.
Этот ответ поможет вам в этом. Просто воссоздайте свою тревогу в методе onReceive() вашего BroadcastReceiver, как было предложено выше.