【问题标题】:When my application send to Background From Activity D which is SingleInstance ,Relauch it from Long Press Home当我的应用程序从作为 SingleInstance 的 Activity D 发送到后台时,从 Long Press Home 重新启动它
【发布时间】:2012-02-16 13:33:38
【问题描述】:

这是我的问题。

我的 Activity A 是正常的 Activity,现在 Activity A 以正常意图调用 Activity B 现在 Activity B 调用 Activity C。现在我有一个 Activity D,我声明为 SingleInstance

  android:launchMode="singleInstance"

现在,当我通过 Intent 从 Activity C 启动我的 Activity D 时,现在让我们看看用户在我的 Activity D 上的一种情况,现在用户按下主页键,现在他到达我的 Android 手机的主屏幕。现在用户长按在 Home 键中,有最近的应用程序列表,其中用户按下我的应用程序和我的应用程序显示 Activity D 这是当前但真正的问题开始,当用户按下返回键时它发送到主屏幕,我不希望它应该显示我的活动C 是活动 D 的调用者。

任何人都可以帮助解决最近申请列表中的申请午餐问题。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    你读过这个吗 http://developer.android.com/guide/topics/manifest/activity-element.html#lmode???

    • 单任务
      系统在新任务的根部创建活动并将意图路由到它。但是,如果 Activity 的实例已经存在,系统会通过调用其 onNewIntent() 方法将 Intent 路由到现有实例,而不是创建一个新实例。
    • 单实例
      与“singleTask”相同,只是系统不会在持有该实例的任务中启动任何其他活动。 Activity 始终是其任务中唯一且唯一的成员。

    【讨论】:

    • ,是的,我已经读过了,我将我的活动 D 删除为android:launchMode="singleInstance"。因为我们发现它不适合我们的应用程序。感谢您的回复。
    【解决方案2】:

    与“singleTask”相同,只是系统不启动任何其他任务 活动到持有实例的任务中。活动总是 其任务中唯一且唯一的成员

    来自documentation

    因此您必须从清单文件中删除 android:launchMode="singleInstance" 或更改 Activity D 中的覆盖后退按钮功能。

    【讨论】:

    • 但是使用 SingleTask 将帮助我使用 moveTaskToBack(true) 将我的 Activity D 发送到后面;当我完成 Activity D 使用时,在那个 Activity 中。
    • 只有当用户从 Activity D 离开应用程序然后他通过长按 home 从最近的应用程序启动应用程序时才会出现我的问题。
    • 这是因为“singleTask”在您的应用程序恢复时仅运行 Activity D。尝试删除它,您会看到不同之处。
    • 我使用 SingleTask 来响应我从 singleInstance 获得的非预期行为。
    【解决方案3】:

    现在为了摆脱这个问题,我会做以下事情。

    正如我所说的 Activity D 是在 Android Manifest 中声明的单实例,现在 Activity D 有

    onNewIntent(Intent intent)  @Override
    

    现在我在这个方法中添加以下代码。

    if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
            Intent intent=new Intent(Activity D.this, Activity C.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            startActivity(intentStart);
            return;
        }
    

    【讨论】:

    • 这对我也有用,但我不得不将代码放在活动 D 的 onCreate() 中。谢谢,这让我发疯了。
    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 2014-09-14
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多