Я реализовал диспетчер аварийных сообщений так же, как и в примере приложения Google. Все работает корректно, за исключением случаев, когда я перезапускаю приложение, диспетчер аварийных сигналов больше не останавливается.AlarmManager не останавливается после перезапуска приложения.
AlarmReceiver.class
public class AlarmReceiver extends WakefulBroadcastReceiver {
AlarmManager alarmManager;
PendingIntent alarmIntent;
@Override
public void onReceive(Context context, Intent intent) {
// do stuff here
}
public void setAlarm(Context context)
{
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReceiver.class), 0);
// Fire alarm every 30min
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,
5000,
5000,
alarmIntent);
// Restart alarm if device is rebooted
ComponentName receiver = new ComponentName(context, BootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void cancelAlarm(Context context)
{
if (alarmManager != null)
{
alarmManager.cancel(alarmIntent);
}
// Disable BootReceiver so that alarm won't start again if device is rebooted
ComponentName receiver = new ComponentName(context, BootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
Так вот проблема. Когда я впервые запускаю приложение и запускаю AlarmManager, я могу легко его остановить. Но как только я закрою приложение и запустил его снова, AlarmManager больше не может быть остановлен. Ничего не происходит, когда я нажимаю кнопку остановки вообще.
Я почти на 100% уверен, что причина в том, что AlarmManager имеет значение null после перезапуска приложения. Но если я удалю оператор if, приложение выйдет из строя.
Но почему же это якобы работает в образце приложения, но не в моем приложении?
У меня была такая же проблема, моя тревога не перезапускается после перезагрузки телефона. Я поставил будильник в течение 2 минут, если между устройством времени перезагрузка будильника не срабатывает. У меня было более 30 различных сигналов тревоги в разных фрагментах, поэтому, пожалуйста, помогите мне. –