在android中避免两个实例

时间:2013-09-20 21:33:29

标签: android performance android-intent

我正在开发android中的文档编辑器,它将DashBoard作为MainActivity,我将打开编辑器,这是另一个编辑活动。我还允许通过输入

等条目来打开SD卡中的文档
<data
    android:host="*"
    android:mimeType="*/*"
    android:pathPattern=".*\\.doc"
    android:scheme="file" />

现在的问题是,首先我打开DashBoard,然后我按下设备主页按钮,这使得活动暂停状态。我转到SD卡并打开文档,创建另一个DashBoardActivy来导入文件。如何避免创建两个实例?

2 个答案:

答案 0 :(得分:0)

您需要在清单中为DashBoardActivity指定launchMode。选择正确的模式取决于您想要的行为。例如,singleInstance将确保只创建DashBoardActivity的一个实例:

<activity [...] android:launchMode="singleInstance" />

但是,这也意味着您只能将活动用于一个目的。限制较少的类似选项是singleTop

答案 1 :(得分:0)

如果您在清单文件中将其标记为,则可以避免您刚才提到的情况 的 launchMode = singleTop 但是如果您提到 “,就像您按下主页按钮” 那样会将前一个实例保留在后台,所以这次当您尝试启动活动前一个实例(位于靠背顶部)将被使用。

堆叠:INSTANCE1 已执行操作:按主页按钮

堆栈保持不变 堆叠:INSTANCE1

已执行操作:尝试再次为新文档启动活动 堆栈:INSTANCE1(再次通过onNewIntent()激活)

所以现在INSTANCE1位于顶部,没有新的实例将被启动,因为它被标记为单顶

了解更多信息 android document for these flags

希望有所帮助