Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 当应用程序恢复时,报警警报对话框恢复_Android_Android Activity_Android Alarms_Activity Finish - Fatal编程技术网

Android 当应用程序恢复时,报警警报对话框恢复

Android 当应用程序恢复时,报警警报对话框恢复,android,android-activity,android-alarms,activity-finish,Android,Android Activity,Android Alarms,Activity Finish,我早些时候问过这个问题,但有人认为我解释得不够,于是对答案投了反对票,再也没有投赞成票,尽管在我添加了解释后,他确实得到了答案。现在没有人愿意为我提供关于这个问题的解决方案。所以我在这里又问了一遍 我有一个应用程序,用户可以设置一个警报,并期望该应用程序弹出一个屏幕(无论该应用程序当前处于活动状态还是处于后台状态,或者被关闭),显示一条带有“确定”按钮的消息。大概是这样的: 情景1:快乐流 应用程序已打开并正在运行 当报警时间到时,屏幕上会弹出报警对话框,并显示消息和OK按钮,报警开始响起

我早些时候问过这个问题,但有人认为我解释得不够,于是对答案投了反对票,再也没有投赞成票,尽管在我添加了解释后,他确实得到了答案。现在没有人愿意为我提供关于这个问题的解决方案。所以我在这里又问了一遍

我有一个应用程序,用户可以设置一个警报,并期望该应用程序弹出一个屏幕(无论该应用程序当前处于活动状态还是处于后台状态,或者被关闭),显示一条带有“确定”按钮的消息。大概是这样的:

情景1:快乐流

应用程序已打开并正在运行

  • 当报警时间到时,屏幕上会弹出报警对话框,并显示消息和OK按钮,报警开始响起
  • 用户单击OK按钮确认报警
  • 对话框关闭,报警停止响铃->finish(),在OK的onClick方法中调用
场景2:问题流

应用程序是有背景的

  • 当报警时间到时,屏幕上会弹出报警对话框,并显示消息和OK按钮,报警开始响起
  • 用户单击“确定”将其取消-->报警停止,对话框取消-->用户转到最近-->恢复应用-->报警对话框再次弹出,报警开始响起
结束循环并返回应用程序主页的唯一方法是从最近的应用程序中删除应用程序并重新启动应用程序,或者只需单击图标而不是从最近的应用程序中重新启动应用程序

我所尝试的:

报警屏幕上的OK按钮调用finish(),因此我希望单击OK可以销毁该活动。此外,报警通知活动在清单中被标记为noHistory=“true”,并且意图在其上具有标志“活动”清除“顶部”,以确保其已清除且未保存

以编程方式单击OK启动my home活动是一种有效的解决方案,但除非没有解决方案,否则我不想走这条路。我肯定有


在我所看到的每一个地方,只有这两个建议的解决方案将活动从后堆栈中移除,再也不会出现。但这些似乎对我没用。我确信我遗漏了一些基本的东西,但我一生都无法思考或发现它是什么。

我假设您使用的是android alarm
setRepeating()
。当用户单击“确定”按钮时,您需要取消报警

PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);

好吧,你说得对,我没有取消闹钟。但是在这种情况下,我点击OK,当我从最近的状态恢复我的应用时,通知对话框(这是一个Android活动)onCreate被调用。就是在这里,铃声被设置为开始鸣响。因此,再次响起的不是警报本身,而是安卓选择在恢复时显示的活动对话框,可能是因为它是我应用程序上最后一个已知的活动。所以我觉得要摆脱后台的活动了,怎么办?我现在正在取消警报,点击OK。我不知道如何从背后摆脱这种活动。我想要的行为是。。。报警对话框应在时间结束时显示-->用户单击确定-->对话框解除-->用户转到最近并继续应用-->应用程序显示主屏幕,就像新启动应用程序一样。是否使用了警报对话框?如果是,请检查。