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

时间:2017-02-11 06:34:19

标签: android android-activity android-alarms activity-finish

我之前提出过这个问题,但是有人认为我没有足够的解释并低估了答案,即使在我添加了解释之后他确实得到了答案,也没有回到upvote。现在没有人有兴趣为我提供该线程的解决方案。所以我再次在这里问。

我有一个应用程序,用户可以设置闹钟,并希望应用程序弹出一个屏幕(无论该应用程序当前是活动的还是在后台或被杀死),它显示带有OK按钮的消息。像这样:

enter image description here

场景1:快乐流程

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

  • 当闹铃时间结束时,屏幕上会弹出警告对话框,并显示消息和确定按钮,闹铃开始响铃。
  • 用户单击“确定”按钮以确认警报。
  • Dialog取消并停止响铃 - >在OK的onClick方法中调用finish()。

场景2:有问题的流程

申请背景

  • 当闹铃时间结束时,屏幕上会弹出警告对话框,并显示消息和确定按钮,闹铃开始响铃。
  • 用户点击“确定”将其关闭 - >警报停止并且对话框被解除 - >用户转到最近 - >恢复应用 - >警报对话框再次弹出,警报开始响铃!

结束循环并返回应用程序主页的唯一方法是从最近杀死应用程序并重新启动应用程序或者只需通过单击图标重新启动应用程序,而不是从最近恢复它

我尝试过:

警报屏幕上的“确定”按钮调用finish(),因此我希望在单击“确定”时销毁活动。警报通知活动也标记为noHistory =" true"在清单中,Intent上有标志FLAG_ACTIVITY_CLEAR_TOP,以确保它被清除而不被保存。

以编程方式单击“确定”启动我的家庭活动是有效的解决方案之一,但除非没有解决方法,否则我不想走这条路。我肯定有。

无处不在,我看到这些是唯一两个提议的解决方案,让活动从后台删除,永远不会再出现。但这些似乎不适合我。我确信我缺少了一些基本的东西,但我不能为我的生活思考或发现它是什么。

1 个答案:

答案 0 :(得分:0)

我假设你使用了android alarm setRepeating()。当用户点击OK按钮时,你需要取消闹钟。

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