共享库项目活动的单个实例?

时间:2012-07-02 15:22:32

标签: android singleton android-manifest android-activity

This answer建议使用AndroidManifest的android:launchMode="singleTask"将活动限制为单个实例。

这对于所有活动都是项目一部分的应用程序来说非常棒,但是当我使用Library Project使用{{3}}定义应用程序的主要活动的应用程序时,库项目的AndroidManifest 将被忽略所以我真的不能在那里使用android:launchMode="singleTask"属性。

如果我在应用程序的AndroidManifest.xml中使用android:launchMode="singleTask",那么每个活动都有不同的名称,此属性将仅限于单个实例相同的应用程序,而不是不同的应用程序使用此共享活动(用作库项目)。

我真正想要的是,在任何特定时刻,只有一个应用程序(使用该共享库项目活动的不同应用程序)可以运行。

这是否可以使用android:launchMode="singleTask"属性?

如果无法做到这一点,建议采用其他方法吗?

2 个答案:

答案 0 :(得分:3)

尝试使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT。每当您启动一个Activity时,如果该Activity的实例存在,它将被带到堆栈的前面而不是第二次创建。这可以确保在任何给定时刻只有一个Activity保留在堆栈中。

另一种方法是使用a static variable。不确定这是多么可靠。

答案 1 :(得分:2)

图书馆计划只是您用来重复使用代码的东西。编译应用程序时,生成的.apk文件不知道有助于创建它的库项目。也就是说,不应该通过操纵Library Project的.apk文件来强制执行单例属性(跨越不同的AndroidManifest.xml)。

您可以通过继承Application来强制执行此行为。您可以阅读有关此here的更多信息。