1

我有一个包含多个活动的应用程序......所以假设用户正在导航活动堆栈 A->B->C。然后按主页按钮。现在,当用户单击小部件时,我只想将我的应用程序的现有/当前实例带到前台。我不想要应用程序的新实例。我希望活动 C 回到前台。

我尝试了launchMode,"singleTask" | "singleInstance"但这并没有解决我想要的要求,因为它清除了当前实例并创建了一个带有活动A的新实例。

任何想法如何解决这个问题?

非常感谢!

4

3 回答 3

2

我设法想出了一个解决方案。我设置了专门的启动模式....

android:launchMode="singleInstance"

每次用户再次点击小部件或应用程序图标时,都会启动默认活动 A。要在上次所在的位置打开应用程序,只需onCreate()在类的方法中MainActivity检查isTaskRoot(). 如果为 false,finish()则调用并且活动 A (MainActivity) 将不会出现,并且应用程序将打开到活动 B 中的位置。

于 2012-06-26T05:45:01.580 回答
2

使用 " singleInstance" 并不是一个好主意(有很多原因)。这是一种更好的方法-来自您的小部件意图处理程序:

Intent yourActivity = new Intent(context, YourActivity.class);
yourActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(yourActivity);

您不需要添加CLEAR_TOP到召回活动 C,但如果您想带 A 或 B,则需要它。

我之所以发帖,是因为在 10 多个类似的帖子之间,实际上没有人指出正确的做法。

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP - 最后一段。

于 2012-08-20T23:57:48.260 回答
-1

尝试将此添加到您的意图中

intent.setFlags( Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
于 2012-06-25T03:38:09.607 回答