检查服务中的活动是否已启动

5

我有一个正在进行后台处理的服务,然后我需要启动一个活动来显示服务处理的一些结果。但是,有可能从服务中多次启动该活动。现在,我只想在该活动尚未处于活动状态时才启动它。

有什么可能性以及如何做到这一点?如果您不介意,请提供示例代码。

谢谢!

1个回答

2
你应该在 androidManifest.xml 文件中将你的活动的 launchMode 更改为 singleTask
这个属性的默认值是standard,它允许任意数量的实例运行。
“singleTask”和“singleInstance”活动只能开始一个任务。它们总是在活动堆栈的根部。此外,设备每次只能保持一个活动的实例,也就是只有一个这样的任务。
“singleTask”和“singleInstance”模式在唯一的方面也有所不同:一个“singleTask”活动允许其他活动成为其任务的一部分。它总是在其任务的根部,但其他活动(必须是“standard”和“singleTop”活动)可以启动到该任务中。另一方面,“singleInstance”活动不允许其他活动成为其任务的一部分。它是任务中唯一的活动。如果它启动另一个活动,那么该活动被分配到一个不同的任务中,就像在意图中设置了FLAG_ACTIVITY_NEW_TASK一样。
请查看Android开发者指南以获得更详细的解释(引文也来自其中)。
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接