Android AlarmManager已删除-强制关闭应用程序
我已经找了好几天的解决办法了。甚至可能没有解决办法 发生的情况如下: 我有一个应用程序,它可以为用户安排闹钟,让用户起床。警报“总是”响真的很重要 为了让闹钟响起来,我使用了AlarmManager。此计划旨在按计划时间执行。当应用程序通过“后退/主页”按钮打开或关闭时,此功能可以正常工作 当我使用强制关闭选项关闭应用程序时,Alarm Manager警报将从系统中清除,并且不会熄灭 我已经尝试过以下方法:Android AlarmManager已删除-强制关闭应用程序,android,alarmmanager,Android,Alarmmanager,我已经找了好几天的解决办法了。甚至可能没有解决办法 发生的情况如下: 我有一个应用程序,它可以为用户安排闹钟,让用户起床。警报“总是”响真的很重要 为了让闹钟响起来,我使用了AlarmManager。此计划旨在按计划时间执行。当应用程序通过“后退/主页”按钮打开或关闭时,此功能可以正常工作 当我使用强制关闭选项关闭应用程序时,Alarm Manager警报将从系统中清除,并且不会熄灭 我已经尝试过以下方法: 启动粘性服务 DefaultUncaughtExceptionHandler-将不工作
- 启动粘性服务
- DefaultUncaughtExceptionHandler-将不工作,因为没有捕获强制关闭应用程序的异常
- 广播接收器-问题在于警报被删除
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);
编辑:
为了试试看我是否不是唯一一个有这个问题的人,我下载了一些很好用的闹钟。他们似乎都有和我一样的行为。现在我就不谈了。他们的评价也很高
不过,如果你能找到这个问题的解决办法,我想知道 在我看来(作为Android用户),这是正确的行为。假设应用程序有导致崩溃的bug(使用崩溃对话框),并且该应用程序计划每分钟启动一些操作。如果崩溃对话框每分钟都出现,您可以做什么
所以我希望你的问题没有直接的答案(比如“调用这个方法”)。
和往常一样,有一些丑陋的方式——比如启动几个进程来跟踪所有其他进程,并在需要时重新启动,但随后您的应用程序开始看起来像病毒……从我(作为Android用户)的角度来看,这是正确的行为。假设应用程序有导致崩溃的bug(使用崩溃对话框),并且该应用程序计划每分钟启动一些操作。如果崩溃对话框每分钟都出现,您可以做什么
所以我希望你的问题没有直接的答案(比如“调用这个方法”)。
和往常一样,有一些丑陋的方法-比如启动几个进程来跟踪所有其他进程,并在需要时重新启动,但随后您的应用程序开始看起来像病毒…尝试更改代码:
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
致:
还可以尝试添加:
alarmManager.cancel(pendingIntent);
之前:
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
尝试更改您的代码:
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
致:
还可以尝试添加:
alarmManager.cancel(pendingIntent);
之前:
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
你说得对。这些东西我读了很多遍。我仍然在寻找解决办法。这种令人讨厌的方式可能正是我被要求去做的,为了得到我想要的行为,但也许有人有更好的解决办法。谢谢你的回答!你说得对。这些东西我读了很多遍。我仍然在寻找解决办法。这种令人讨厌的方式可能正是我被要求去做的,为了得到我想要的行为,但也许有人有更好的解决办法。谢谢你的回答!我试过了,但我认为它不起作用,也不起作用。这些旗帜表明了我想用吊坠做什么。(更新、新建、取消存在,然后创建)。无论如何,谢谢你的建议@请检查编辑后的答案。安装应用程序的新副本,然后尝试此操作也不起作用。我想知道。你有没有在你的应用程序中使用过这个?或者你可能会想到强制关闭,以不同的方式关闭。例如,我有一个三星Galaxy S2。当应用程序打开时,我长按home(主页)按钮。然后我会看到进程菜单。在那里我点击“结束”。此力关闭应用程序。只有在这一点上,报警管理器才会被清除。以任何其他方式隐藏/关闭都是有效的。@ThijsLimmen您在logcat中遇到了什么错误,请发布它没有错误。强制关闭时,我设置的报警管理器将被清除。我找到了它发生的几种解释。你在答案下面看到的一个。这可能是为了防止人们制造病毒。我试过了,但我认为它不起作用,也不起作用。这些旗帜表明了我想用吊坠做什么。(更新、新建、取消存在,然后创建)。无论如何,谢谢你的建议@请检查编辑后的答案。安装应用程序的新副本,然后尝试此操作也不起作用。我想知道。你有没有在你的应用程序中使用过这个?或者你可能会想到强制关闭,以不同的方式关闭。例如,我有一个三星Galaxy S2。当应用程序打开时,我长按home(主页)按钮。然后我会看到进程菜单。在那里我点击“结束”。此力关闭应用程序。只有在这一点上,报警管理器才会被清除。以任何其他方式隐藏/关闭都是有效的。@ThijsLimmen您在logcat中遇到了什么错误,请发布它没有错误。强制关闭时,我设置的报警管理器将被清除。我找到了它发生的几种解释。你在答案下面看到的一个。这可能是为了防止人们制造病毒。我也在思考同样的问题。因为kitkat中有一个bug,即使你启动了它,它也不会重新启动服务,这就成了一个问题。我正在考虑同样的问题。因为kitkat中有一个bug,即使您启动了服务,它也不会重新启动,这就成了问题。