如何等到Android中的服务停止

时间:2014-05-22 19:25:19

标签: android android-service splash-screen

我可以等到我的所有服务停止吗?我尝试在我的Android应用程序中制作启动画面,我希望它等到我的所有服务都停止。

ActivityManager manager = (ActivityManager) this
            .getSystemService(ACTIVITY_SERVICE);
        for (RunningServiceInfo service : manager
                .getRunningServices(Integer.MAX_VALUE)){
        }

我尝试这个代码示例...我的问题是我不知道如何在我的splashscreen活动中持续检查这个。 或者它可能不是一个好的解决方案。

1 个答案:

答案 0 :(得分:1)

使用Service代替普通Intent service,因为它在完成任务后会自动停止。

现在,当此服务停止时,您可以发送Local Broadcast,并在您的启动Broadcast中收到此Activity

跟踪正在运行的服务,以及已经停止的服务,您可以使用标记。

因此,例如,如果服务A停止自身并发送广播,则将其标志设置为true

现在每次Broadcast接收检查是否所有标志都为真,如果是,请停止启动画面并转到下一步,否则等待其他服务停止。

示例

我们有三个服务A,B,C运行并且对应它们我们在Splash Activity中有三个标志stopA,stopB,stopC。

现在当A完成时,它发送一个本地广播,然后在Splash Activity中收到,现在我们设置A的标志,即stopA = true;并检查服务标志B& C是否属实(即,如果其他服务已停止或正在运行)

如果true完成此活动,则等待其他广播。