【问题标题】:How to wait until services stops in Android如何等到Android中的服务停止
【发布时间】:2014-07-12 00:06:56
【问题描述】:

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

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

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

【问题讨论】:

  • 您在需要服务的启动画面中做什么?对于这样的一次性进程,您应该使用 AsyncTask。
  • html、json、xml下载解析...
  • 检查这个答案...它帮助了我... [很好的解释][1] [1]:stackoverflow.com/a/3055749/2149135

标签: android android-service splash-screen


【解决方案1】:

不要使用普通的Service,而是使用Intent service,因为它会在完成任务后自动停止。

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

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

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

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

示例

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多