Android 通知打开活动和后退按钮?仅限于一个实例?

Android 通知打开活动和后退按钮?仅限于一个实例?,android,Android,我遇到了一个与活动堆栈相关的情况,但我对Android开发人员来说还不够熟悉,现在不知道如何应对它 我有一个像秒表一样工作的应用程序。当您启动它时,一个正在进行的通知会进入通知托盘,并一直持续到您停止秒表为止。我注意到,如果我的秒表在前台运行,并且我触摸了通知,它会创建一个新的秒表活动实例,并将旧的实例滑出屏幕。这会导致“后退”按钮出现问题(您按下“后退”按钮,新实例将消失以显示旧实例)。这是有道理的,但我不想这样。如何防止应用程序的多个实例运行 如何防止应用程序的多个实例运行 在Intent中

我遇到了一个与活动堆栈相关的情况,但我对Android开发人员来说还不够熟悉,现在不知道如何应对它

我有一个像秒表一样工作的应用程序。当您启动它时,一个正在进行的通知会进入通知托盘,并一直持续到您停止秒表为止。我注意到,如果我的秒表在前台运行,并且我触摸了通知,它会创建一个新的秒表活动实例,并将旧的实例滑出屏幕。这会导致“后退”按钮出现问题(您按下“后退”按钮,新实例将消失以显示旧实例)。这是有道理的,但我不想这样。如何防止应用程序的多个实例运行

如何防止应用程序的多个实例运行

Intent
中,与
pendingent
一起用于
通知
,添加
setFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TOP | Intent.FLAG\u ACTIVITY\u SINGLE\u TOP)
设置标志(意图。标志\u活动\u重新排序\u至\u前端),无论哪种行为更适合您的需要

如何防止应用程序的多个实例运行


Intent
中,与
pendingent
一起用于
通知
,添加
setFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TOP | Intent.FLAG\u ACTIVITY\u SINGLE\u TOP)
设置标志(意图。标志\u活动\u重新排序\u至\u前端),无论哪种行为更适合您的需要。

您也可以禁用“后退”按钮。虽然没有公共软件解决方案那么优雅,但有些选项没有问题

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

您还可以禁用“后退”按钮。虽然没有公共软件解决方案那么优雅,但有些选项没有问题

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

当你问问题时,你应该使用干巴巴的原则。我不认为在你的问题中,当你用安卓标签标记它时,有必要加上“[安卓]”。当你问问题时,你应该使用干燥原则。我认为,当你用Android标签标记它时,没有必要在你的问题中加“[Android]”。它们的行为有什么区别?@Corey Ogburn:如果你有几个活动,那么
CLEAR\u TOP
变量将擦除任务历史记录,只让用户看到由
通知触发的活动。
REORDER
变量只是将现有活动拉到前台,将任何其他活动仍保留在任务历史记录中。这些标志的文档有更多的详细信息。它们的行为有什么区别?@Corey Ogburn:如果您有多个活动,则
CLEAR\u TOP
变量将wip任务历史记录,用户只剩下由
通知触发的活动。
REORDER
变量只是将现有活动拉到前台,将任何其他活动仍保留在任务历史记录中。这些标志的文档有更多详细信息。