【发布时间】:2014-09-04 18:23:02
【问题描述】:
因此,我正在尝试创建一个应用程序,该应用程序具有类似 Android 手机闹钟的功能,它会在用户选择的时间提醒他们。当警报屏幕出现时,用户可以选择推送通知或暂停,应用将推送通知然后关闭。
但是,当我单击贪睡或通知按钮时,应用程序并没有关闭。相反,应用程序会停止警报声并最小化(就像用户触摸主页按钮时一样)。如果我触摸最近的应用程序,我可以再次打开警报屏幕。
编辑:我知道有一些代码,例如 System.exit() 或 killProcess,因为不推荐使用这些代码,我宁愿避免使用它们。 我问的原因是因为我测试了手机随附的真实时钟应用程序(4.3),并且它的警报屏幕将在我按下贪睡或关闭按钮后关闭。所以一定有办法让我做同样的事情,对吧?
回答 好的,正如Sagar Pilkhwal 下面解释的那样,在阅读了其他相关问题之后,我发现没有“好的”方法可以通过代码关闭您的应用程序,您必须将该选项留给用户或操作系统。除非您想使用 System.exit 或 killProcess,但它们是强制关闭应用程序的坏方法。
Sagar Pilkhwal 也有解决此问题的替代方法,如果您不希望您的警报屏幕显示在最近的应用程序中,您可以调出另一个活动。
但是,对于这种情况和一般的警报管理器,打开 MainActivity 会导致讨厌的东西,因为 MainActivity 是我们处理警报事件的时候。然后我找到了另一个解决方案,如果您不希望您的警报屏幕显示在最近的应用程序中,只需添加
android:excludeFromRecents="true"
添加到 Manifest 中的 Alert.class Activity,或将 Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 添加到用于启动 Alert.class 的 Intent。
这会导致其他问题,当用户按下 Home 键时,闹钟不会关闭,并且用户无法打开最近的应用程序以访问警报屏幕(他必须打开应用程序这样做)。我通过尝试检测主页按钮按下事件来解决此问题。详细答案如下。
【问题讨论】:
-
考虑创建一个minimal, complete, and verifiable example。这是很多代码,并非所有代码都是重现您的问题所必需的。包括您编程的语言以及您正在编程的设备会很有帮助。
-
谢谢,我编辑并删除了其中的一些代码。其余的,我真的不知道它是否与问题有关(如果我知道我就不会问这个问题),所以为了安全起见,我仍然保留它。
标签: java android broadcastreceiver alarmmanager