我正在开发android中的文档编辑器,它将DashBoard作为MainActivity,我将打开编辑器,这是另一个编辑活动。我还允许通过输入
等条目来打开SD卡中的文档<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.doc"
android:scheme="file" />
现在的问题是,首先我打开DashBoard,然后我按下设备主页按钮,这使得活动暂停状态。我转到SD卡并打开文档,创建另一个DashBoardActivy来导入文件。如何避免创建两个实例?
答案 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
希望有所帮助