我可以等到我的所有服务停止吗?我尝试在我的Android应用程序中制作启动画面,我希望它等到我的所有服务都停止。
ActivityManager manager = (ActivityManager) this
.getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)){
}
我尝试这个代码示例...我的问题是我不知道如何在我的splashscreen活动中持续检查这个。 或者它可能不是一个好的解决方案。
答案 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
完成此活动,则等待其他广播。