在启动外部活动/意图后返回应用程序时显示应用程序主菜单/主屏幕

时间:2010-03-16 10:04:47

标签: android android-intent

我正在通过我的应用启动Android电子市场,使用此代码搜索类似的产品:

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

这适用于展示类似产品。但是,如果我在市场上点击主页按钮,当我重新打开应用程序时,它仍会显示市场结果。在这种情况下,我想转到主菜单。

有解决方案吗?

3 个答案:

答案 0 :(得分:15)

抱歉,FLAG_ACTIVITY_NO_HISTORY可能不是正确的解决方案。请注意它的语义 - 活动不会出现在历史记录中。因此,如果用户点击其中的一个东西以进入下一个活动,然后按下它们,它们将不会返回到前一个(但之前的那个)。这很少是你想要的。

更糟糕的是,如果他们从市场活动中进入第二个活动,请按回家,然后返回到您的应用程序,第二个活动仍将在那里(它将保留在历史记录中)。

此情况的正确标志为FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

答案 1 :(得分:10)

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

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更适合您的需求。

答案 2 :(得分:0)

这不是问题。

当你在Market应用程序上按下它时,它没有关闭,只是暂停了。所以,当你再次打开它时,你就恢复它。检查Android activity's lifecycle