以编程方式设置活动启动模式

时间:2013-10-03 09:27:21

标签: android android-intent android-activity launchmode

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

3 个答案:

答案 0 :(得分:3)

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

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

之后,不要尝试使用意图标记打开Activity,而是根据您需要的 launchMode 输入{{1}}的意图{{1}}。

答案 1 :(得分:2)

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

android:launchMode="@integer/launchModeAPIlevel"

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

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

launchmode 1 == singleTop singleTask == 2

答案 2 :(得分:0)

只需创建两个活动A和B,B扩展A. 在manifest声明中,launchMode =&#34; singleTask&#34;对于A,和launchMode =&#34; singleInstance&#34;为B. 并根据您需要的launchMode启动Activity。