This answer建议使用AndroidManifest的android:launchMode="singleTask"
将活动限制为单个实例。
这对于所有活动都是项目一部分的应用程序来说非常棒,但是当我使用Library Project使用{{3}}定义应用程序的主要活动的应用程序时,库项目的AndroidManifest 将被忽略所以我真的不能在那里使用android:launchMode="singleTask"
属性。
如果我在应用程序的AndroidManifest.xml中使用android:launchMode="singleTask"
,那么每个活动都有不同的名称,此属性将仅限于单个实例相同的应用程序,而不是不同的应用程序使用此共享活动(用作库项目)。
我真正想要的是,在任何特定时刻,只有一个应用程序(使用该共享库项目活动的不同应用程序)可以运行。
这是否可以使用android:launchMode="singleTask"
属性?
如果无法做到这一点,建议采用其他方法吗?
答案 0 :(得分:3)
尝试使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
。每当您启动一个Activity时,如果该Activity的实例存在,它将被带到堆栈的前面而不是第二次创建。这可以确保在任何给定时刻只有一个Activity保留在堆栈中。
另一种方法是使用a static variable。不确定这是多么可靠。
答案 1 :(得分:2)
图书馆计划只是您用来重复使用代码的东西。编译应用程序时,生成的.apk
文件不知道有助于创建它的库项目。也就是说,不应该通过操纵Library Project的.apk
文件来强制执行单例属性(跨越不同的AndroidManifest.xml
)。
您可以通过继承Application
来强制执行此行为。您可以阅读有关此here的更多信息。