【问题标题】:Set activity launch mode programmatically以编程方式设置活动启动模式
【发布时间】:2013-10-03 09:27:21
【问题描述】:

我需要根据我的应用状态使用不同的launchMode 调用活动。在一种情况下应该是singleInstance,在另一种情况下应该是singleTask。我知道如何在 AndroidManifest 中设置launchMode,但由于它应该是动态属性,我必须从代​​码中进行设置。我想,在开始活动之前,我可以在意图中添加一些特定的标志,但我发现只有singleTop 标志。那么有什么办法可以解决这个问题吗? 谢谢

【问题讨论】:

    标签: android android-intent android-activity launchmode


    【解决方案1】:

    在我的情况下,我需要两个与不同 android API 级别相关的不同启动模式: 在 AndroidManifest 中

    android:launchMode="@integer/launchModeAPIlevel"
    

    文件夹内的不同整数值 values-18, values-21

    <integer name="launchModeAPIlevel">1</integer>
    

    启动模式 1 == singleTop 单任务 == 2

    【讨论】:

      【解决方案2】:

      经过一些调查,我注意到以这种方式不可能做到这一点。但好消息是我有一些解决方法:

      你必须创建两个Activities,每个都有对应的launchModes。 一个Activity 是真正的Activity,其中包含您的代码,另一个将在onCreate() 方法中调用main Activity,但由于它需要launchMode,因此main Activity 将以该模式启动。不是很好,但完全有效的解决方案。

      之后,不要尝试使用意图标志打开您的 Activity,而是根据您需要的 launchMode 放入 Activity 的意图 class

      【讨论】:

        【解决方案3】:

        只需创建两个活动 A 和 B,B 扩展 A。 在清单中为 A 声明 launchMode="singleTask",为 B 声明 launchMode="singleInstance"。 并根据你需要的launchMode启动Activity。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-27
          • 2013-07-03
          • 1970-01-01
          • 2011-08-25
          • 1970-01-01
          • 2020-01-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多