2014-05-22 25 views
0

我可以等到我的所有服务都停止了吗?我尝试在我的android应用程序中制作splashscreen,并且希望它等到我的所有服务都停止了。如何等待服务停止在Android中

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

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

+1

你在闪屏中做了些什么,需要很长时间才能获得服务?您应该使用AsyncTask来执行这样的一次性过程。 –

+0

HTML,JSON,XML下载和解析... – D3laru3

+0

检查这个答案......它帮助我...... [一个很好的解释] [1] [1]:HTTP:/ /stackoverflow.com/a/3055749/2149135 – Bhaskar

回答

1

而不是一个正常的Service,使用Intent service,因为它完成其任务后自动停止自己。

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

保持跟踪正在运行的服务,并且已停止服务,您可以使用此标志。

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

现在每个Broadcast接收检查是否所有的标志都是真的,如果是,停止启动屏幕并移动到下一步或等待其他服务停止。

我们有三个服务A,B,C的运行和相应的人,我们有三个标志Stopa说,STOPB,STOPÇ我们飞溅活动。

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

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