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