【问题标题】:Displaying app main menu/home screen when returning to app after having started an external Activity/Intent启动外部 Activity/Intent 后返回应用程序时显示应用程序主菜单/主屏幕
【发布时间】:2010-03-16 10:04:47
【问题描述】:

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

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

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

有解决办法吗?

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

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

    更糟糕的是,如果他们从市场活动转到第二个活动,按主页,然后返回到您的应用,第二个活动仍然存在(它会保留在历史记录中)。

    这种情况的正确标志是FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

    【讨论】:

    • 这对我帮助很大。为您的努力 +1。
    【解决方案2】:

    如果您将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 更适合您的需要。

    【讨论】:

      【解决方案3】:

      这不是问题。

      当您在 Market 应用上按主页时,它并没有关闭,只是暂停了。因此,当您再次打开它时,您会恢复它。检查Android activity's lifecycle

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多