AlarmManager已删除 - 强制关闭应用程序

时间:2013-08-19 09:25:56

标签: android alarmmanager

我现在正在寻找解决方案。甚至可能没有解决方案。

以下是: 我有一个应用程序,为用户安排警报,让用户起床。警报“总是”熄灭非常重要。

为了能够让闹钟响起,我使用了AlarmManager。这计划在预定时间执行意图。使用后退/主页按钮打开或关闭应用程序时,此工作正常。

当我使用强制关闭选项关闭应用程序时,警报管理器警报将从系统中清除,它们不会熄灭。

我已经尝试过以下事项:

  • START_STICKY服务
  • DefaultUncaughtExceptionHandler - 无法正常工作,因为没有因强行关闭应用程序而遇到异常。
  • 广播接收器 - 问题在于警报被删除。

我想知道是否有人遇到过与AlarmManager类相同的问题,以及是否找到解决方案或其他方法来解决此问题。

P.S。我正在创建这样的Alarm Manager警报:

            Intent myIntent = new Intent(getApplicationContext(), CheckAlarmService.class);

            PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
            1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(ALARM_SERVICE);

            Calendar calendar = Calendar.getInstance();

            int daysTillAlarm = AlarmHelper.calculateDaysTillAlarm(alarm);
            calendar.add(Calendar.DATE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 15);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);

            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

修改

为了试着看看我是不是唯一一个有问题的人,我下载了一些使用得很好的闹钟。他们似乎都和我一样。现在我会留下它。他们的评价也很高。

如果您可以解决这个问题,我想知道!

2 个答案:

答案 0 :(得分:1)

尝试更改代码:

PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
            1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

为:

PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
            1, myIntent, 0);

还尝试添加:

alarmManager.cancel(pendingIntent);

之前:

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

答案 1 :(得分:0)

从我的角度来看(作为Android用户)这是正确的行为。想象一下,导致崩溃的bug(带有崩溃对话框)的应用程序,这个应用程序安排了每分钟启动一些操作。每分钟出现崩溃对话框你能做些什么?

所以我希望你的问题没有直接答案(比如“只是叫这个方法”)。 与往常一样,有一些丑陋的方式 - 比如启动几个跟踪所有其他进程的进程并在需要时重新启动,但随后您的应用程序开始看起来像病毒......