Android 通知打开活动和后退按钮?仅限于一个实例?
我遇到了一个与活动堆栈相关的情况,但我对Android开发人员来说还不够熟悉,现在不知道如何应对它 我有一个像秒表一样工作的应用程序。当您启动它时,一个正在进行的通知会进入通知托盘,并一直持续到您停止秒表为止。我注意到,如果我的秒表在前台运行,并且我触摸了通知,它会创建一个新的秒表活动实例,并将旧的实例滑出屏幕。这会导致“后退”按钮出现问题(您按下“后退”按钮,新实例将消失以显示旧实例)。这是有道理的,但我不想这样。如何防止应用程序的多个实例运行 如何防止应用程序的多个实例运行 在Android 通知打开活动和后退按钮?仅限于一个实例?,android,Android,我遇到了一个与活动堆栈相关的情况,但我对Android开发人员来说还不够熟悉,现在不知道如何应对它 我有一个像秒表一样工作的应用程序。当您启动它时,一个正在进行的通知会进入通知托盘,并一直持续到您停止秒表为止。我注意到,如果我的秒表在前台运行,并且我触摸了通知,它会创建一个新的秒表活动实例,并将旧的实例滑出屏幕。这会导致“后退”按钮出现问题(您按下“后退”按钮,新实例将消失以显示旧实例)。这是有道理的,但我不想这样。如何防止应用程序的多个实例运行 如何防止应用程序的多个实例运行 在Intent中
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
变量只是将现有活动拉到前台,将任何其他活动仍保留在任务历史记录中。这些标志的文档有更多详细信息。