1

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

发生的情况如下:我有一个应用程序,它为用户安排警报,让用户起床。警报“总是”响起非常重要。

为了能够让警报响起,我使用了 AlarmManager。这会安排在预定时间执行的意图。当应用程序使用返回/主页按钮打开或关闭时,这可以正常工作。

当我使用强制关闭选项关闭应用程序时,警报管理器警报会从系统中清除,并且不会响起。

我已经尝试过以下事情:

  • START_STICKY 服务
  • DefaultUncaughtExceptionHandler - 不起作用,因为没有捕获到强制关闭应用程序的异常。
  • 广播接收器 - 问题在于警报被删除。

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

ps 我正在创建这样的警报管理器警报:

            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);

编辑:

为了尝试看看我是不是唯一一个遇到这个问题的人,我下载了一些使用良好的闹钟。他们似乎都有和我一样的行为。现在我会离开它。他们的评价也很好。

不过,如果您可能有解决此问题的方法,我想知道!

4

2 回答 2

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);
于 2013-08-19T09:59:54.377 回答
0

从我的角度来看(作为 Android 用户),这是正确的行为。想象一下存在导致崩溃的错误的应用程序(带有崩溃对话框),并且该应用程序安排了每分钟启动一些操作。每分钟出现一次崩溃对话框可以做什么?

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

于 2013-08-19T09:52:51.797 回答