我有一个服务正在做一些后台工作人员,然后我需要启动一个活动,显示服务处理的一些结果。但是有可能从服务开始多次活动。现在,我想只在它尚未激活时启动此活动。
有什么可能性以及如何做到这一点?如果你不介意的话,示例代码会很好。
谢谢!
答案 0 :(得分:2)
您应该在androidManifest.xml文件中将活动的launchMode
更改为singleTask
。
此属性的默认值为standard
,允许运行任意数量的实例。
“singleTask”和“singleInstance”活动只能开始一项任务。它们始终位于活动堆栈的根部。此外,设备一次只能保存一个活动实例 - 只有一个这样的任务。 [...]
“singleTask”和“singleInstance”模式在一个方面也各不相同:“singleTask”活动允许其他活动成为其任务的一部分。它始终是其任务的根源,但其他活动(必然是“标准”和“单一活动”)可以启动到该任务中。另一方面,“singleInstance”活动不允许其他活动成为其任务的一部分。这是任务中唯一的活动。如果它启动另一个活动,则该活动将分配给另一个任务 - 就像FLAG_ACTIVITY_NEW_TASK在意图中一样。
查看Android Developers' Guide以获取更详细的说明(报价也来自那里)
<activity android:name=".activity.YourActivity"
android:launchMode="singleTask"
android:alwaysRetainTaskState="true"
android:clearTaskOnLaunch="false"
android:finishOnTaskLaunch="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>