检查Activity是否在Service中启动

时间:2011-02-10 13:58:28

标签: java android

我有一个服务正在做一些后台工作人员,然后我需要启动一个活动,显示服务处理的一些结果。但是有可能从服务开始多次活动。现在,我想只在它尚未激活时启动此活动。

有什么可能性以及如何做到这一点?如果你不介意的话,示例代码会很好。

谢谢!

1 个答案:

答案 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>