Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AlarmManager已删除-强制关闭应用程序_Android_Alarmmanager - Fatal编程技术网

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

Android AlarmManager已删除-强制关闭应用程序,android,alarmmanager,Android,Alarmmanager,我已经找了好几天的解决办法了。甚至可能没有解决办法 发生的情况如下: 我有一个应用程序,它可以为用户安排闹钟,让用户起床。警报“总是”响真的很重要 为了让闹钟响起来,我使用了AlarmManager。此计划旨在按计划时间执行。当应用程序通过“后退/主页”按钮打开或关闭时,此功能可以正常工作 当我使用强制关闭选项关闭应用程序时,Alarm Manager警报将从系统中清除,并且不会熄灭 我已经尝试过以下方法: 启动粘性服务 DefaultUncaughtExceptionHandler-将不工作

我已经找了好几天的解决办法了。甚至可能没有解决办法

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

为了让闹钟响起来,我使用了AlarmManager。此计划旨在按计划时间执行。当应用程序通过“后退/主页”按钮打开或关闭时,此功能可以正常工作

当我使用强制关闭选项关闭应用程序时,Alarm Manager警报将从系统中清除,并且不会熄灭

我已经尝试过以下方法:

  • 启动粘性服务
  • DefaultUncaughtExceptionHandler-将不工作,因为没有捕获强制关闭应用程序的异常
  • 广播接收器-问题在于警报被删除
我想知道是否有人在AlarmManager类中遇到过同样的问题,以及您是否找到了解决此问题的解决方案或替代方案

p、 我正在创建报警管理器报警,如下所示:

            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,即使您启动了服务,它也不会重新启动,这就成了问题。