显示应用程序主菜单/主屏幕后返回到应用程序时,为经由我的应用程序启动的外部活动/意图
我开始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。
这不是问题。
当您在Market应用程序上按回家时,它并未关闭,只是暂停。所以当你再次打开它时,你会恢复它。检查Android activity's lifecycle。
是的,这是一个问题,因为这不是用户期望的行为。你看如何: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
是你需要的东西更适合。
这工作。非常感谢你 – 2010-03-16 12:14:17
它帮了我很多。为你的努力+1。 – Vivek 2012-01-30 21:08:16