【问题标题】:activity started by other apps, use existing instance其他应用启动的活动,使用现有实例
【发布时间】:2012-09-05 05:11:21
【问题描述】:

我的应用有两个活动 MainActivity 和 ExternEntry。 ExternEntry 被其他一些应用程序调用,作为启动我的应用程序的一种方式。然后,ExternEntry 将调用 MainActivity 上的 startActivity,它可能之前已经启动过。我的问题是,如何在后台恢复 MainActivity 实例?

请注意,这与在同一应用程序中切换活动不同。每次调用 ExternEntry 时,是否也会创建一个新堆栈?

我试过了

        Intent i = new Intent(this, MainActivity.class);
        i.setAction(Intent.ACTION_MAIN);
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        startActivity(i);

        Intent i = new Intent(this, MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(i);

在 ExternEntry 中,但两者都创建 MainActivity 的新实例。

我也尝试将 MainActivity 设置为“singleTask”,但这也没有用。

【问题讨论】:

    标签: android android-intent android-activity instance


    【解决方案1】:

    我认为你应该在 android 清单文件中声明启动模式。

    <activity
            android:name=".name"
            android:launchMode="singleTask"
            >
    

    希望对你有帮助。

    【讨论】:

    • 讨厌这样说,但这是最明显的非解决方案。它应该根据文档工作,但是当我进行实验时,它仍然总是创建活动的新实例。
    • singleTask 表示活动将在一个任务中。我试了一下,效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多