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

7
我需要根据我的应用状态使用不同的launchMode来调用活动。在某些情况下,它应该是singleInstance,而在其他情况下则应该是singleTask。我知道如何在AndroidManifest中设置launchMode,但由于它应该是动态属性,因此我必须从代码中设置它。我认为在启动活动之前可以向意图添加一些特定的标志,但我发现只有singleTop标志。那么有没有办法解决这个问题呢? 谢谢
3个回答

4
在我的情况下,我需要两种不同的launchMode来适应不同的Android API级别: 在AndroidManifest中。
android:launchMode="@integer/launchModeAPIlevel"

在值为values-18、values-21的文件夹中有不同的整数值。

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

launchmode 1 == 单顶部模式 singleTask == 2


这个工作了吗?launchMode需要一个字符串,对吗? - arango_86

4

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

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

之后,不要尝试使用意图标志打开您的Activity,而是在意图中放入根据您需要的launchModeActivity类。


0
只需要创建两个Activity A 和 B,B 继承自 A。 在manifest文件中声明A的launchMode="singleTask",B的launchMode="singleInstance"。 然后根据需要的launchMode启动Activity即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接