0

I am developing document editor in android which has DashBoard as MainActivity and i will open Editor which is another activity for editing. I also allow to open the documents in sdcard by putting entries like

<data
    android:host="*"
    android:mimeType="*/*"
    android:pathPattern=".*\\.doc"
    android:scheme="file" />

Now the issue is, first I opened DashBoard, then i pressed device home button which makes the activity pause state. I move to sdcard and open the document which creates another DashBoardActivy to import the file. How to avoid creating two instances?

4

2 回答 2

0

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

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

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

于 2013-09-20T23:44:17.783 回答
0

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

堆栈:INSTANCE1 actionperformed:按主页按钮

堆栈保持不变 :INSTANCE1

actionperformed:尝试为新文档 堆栈再次启动活动:INSTANCE1(再次通过 onNewIntent() 激活)

所以现在由于 INSTANCE1 位于顶部,因此不会启动新实例,因为它被标记为单顶

有关更多信息,请访问 这些标志的 android 文档

希望能帮助到你

于 2013-09-21T12:09:10.137 回答