显示应用程序主菜单/主屏幕后返回到应用程序时,为经由我的应用程序启动的外部活动/意图

问题描述:

我开始Android Market中使用此代码搜索同类产品:显示应用程序主菜单/主屏幕后返回到应用程序时,为经由我的应用程序启动的外部活动/意图

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.android.com/search?q=pub:\"some txt\"")); 
c.startActivity(intent); 

这工作正常用于展示类似的产品。不过,如果我在市场上点击主页按钮,当我重新打开应用程序时,它仍显示市场结果。我想在这种情况下进入主菜单。

有没有解决方案?

对不起,FLAG_ACTIVITY_NO_HISTORY可能不是正确的解决方案。注意它的语义 - 活动只是不出现在历史中。因此,如果用户点击其中的一件事物来进行下一个活动,那么按下后,它们将不会返回到前一个(但是之前的那个)。这很少是你想要的。

更糟糕的是,如果他们从市场活动中选择第二个活动,按回家并返回到您的应用程序,那么第二个活动仍然存在(它保持在历史中)。

这种情况的正确标志是FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

+0

它帮了我很多。为你的努力+1。 – Vivek 2012-01-30 21:08:16

这不是问题。

当您在Market应用程序上按回家时,它并未关闭,只是暂停。所以当你再次打开它时,你会恢复它。检查Android activity's lifecycle

+0

是的,这是一个问题,因为这不是用户期望的行为。你看如何:http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET – Fernwilter 2012-02-24 14:11:27

如果将FLAG_ACTIVITY_NO_HISTORY标志添加到意图中,它将不会保留在历史堆栈上。当用户导航返回到您的应用程序时,将显示在您启动市场之前可见的最后一项活动。

Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("http://market.android.com/search?q=pub:\"some txt\"")); 

c.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
c.startActivity(intent); 

编辑:hackbod是正确的:FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET是你需要的东西更适合。

+0

这工作。非常感谢你 – 2010-03-16 12:14:17