3

此答案建议使用 AndroidManifestandroid:launchMode="singleTask"将活动限制为单个实例。

这对于所有活动都是项目一部分的应用程序非常有用,但是当我有几个应用程序使用一个库项目,其中定义了应用程序的主要活动时,库项目的 AndroidManifest被忽略,所以我不能android:launchMode="singleTask"在那里真正使用该属性.

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

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

使用该android:launchMode="singleTask"属性是否可行?

如果这是不可能的,还有什么其他方法推荐?

4

2 回答 2

3

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

另一种方法是使用静态变量。不确定这有多可靠。

于 2012-07-06T02:40:23.083 回答
2

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

您可以通过子类化来强制执行此行为Application您可以在此处阅读有关此内容的更多信息。

于 2012-07-02T15:38:02.170 回答