2011-02-10 53 views
5

我有一个服务正在执行一些后台工作人员,然后我需要启动一个显示服务处理结果的活动。但有可能活动从服务开始多次。现在,只有在活动不活动的情况下,我才会启动此活动。检查是否在服务中启动活动

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

谢谢!

回答

2

您应该将您的活动的launchMode更改为androidManifest.xml文件中的singleTask

此属性的默认值为standard,它允许运行任意数量的实例。

“singleTask”和“singleInstance”活动只能开始一项任务。它们始终处于活动堆栈的根部。而且,该设备一次只能保存一个活动实例 - 只有一个这样的任务。 [...]

“singleTask”和“singleInstance”模式在一个方面也各不相同:“singleTask”活动允许其他活动成为其任务的一部分。它始终是其任务的根源,但其他活动(必然是“标准”活动和“单一活动”)可以启动到该任务中。另一方面,“单一实例”活动不允许其他活动成为其任务的一部分。这是该任务中唯一的活动。如果它启动另一个活动,那么该活动将分配给其他任务 - 就好像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>