2011-02-22 48 views
0

我有这种情况与Activity堆栈有关,但我已经足够新到Android开发人员,现在不知道如何响应它。通知开放活动和后退按钮?限制为一个实例?

我有一个像秒表一样的应用程序。当您启动它时,正在进行的通知会进入通知栏,并会一直保持,直到您停止秒表。我注意到,如果我的秒表正在前台运行,并且我触摸通知,它会创建一个秒表活动的新实例,并将旧的实例移出屏幕。这会产生后退按钮的问题(您按回来,新实例消失以显示旧实例)。这很有道理,但我不希望它发生这样的事情。我能做些什么来防止我的应用程序的多个实例运行?

+0

您在提问时应该使用DRY原则。我不认为有必要在你的问题中加入“[Android]”,当你用android标签标记它时。 – 2011-02-22 22:08:24

回答

4

我该怎么做才能防止我的应用程序的多个实例运行?

在你Intent您与PendingIntent使用的Notification,添加setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);,无论行为符合您的需求更好。

+0

他们的行为有什么不同? – 2011-02-23 06:07:00

+0

@Corey Ogburn:如果您有多个活动,那么'CLEAR_TOP'变体将会删除任务历史记录,只留下由'Notification'触发的活动。 “REORDER”变体只是将现有活动拉到前台,使任何其他活动仍留在任务历史记录中。这些标志的文档有更多细节。 – CommonsWare 2011-02-23 11:54:47

1

您也可以禁用后退按钮。不像CommonsWare解决方案那么优雅,但有些选项没有问题!

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

    return super.onKeyDown(keyCode, event); 
}