【问题标题】:How to rebind to foreground service?如何重新绑定到前台服务?
【发布时间】:2017-10-22 09:29:28
【问题描述】:

前台服务已启动并立即绑定到。有没有办法知道服务是否已停止或在活动重新启动后仍在运行。无论如何,安全的方法是执行startService,但是有更干净的方法吗?

【问题讨论】:

  • 不行,没有别的办法

标签: android android-activity android-service android-service-binding


【解决方案1】:

您可以通过以下方式使用此方法:

https://stackoverflow.com/a/6452570/5457878

检查您的服务是否仍在运行。你可以在你的onResume()或者onCreate()中调用这个方法,如果没有运行,我会重启它。

private boolean isServiceRunning(String serviceName){
    boolean serviceRunning = false;
    ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
    Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
    while (i.hasNext()) {
        ActivityManager.RunningServiceInfo runningServiceInfo = i
                .next();

        if(runningServiceInfo.service.getClassName().equals(serviceName)){
            serviceRunning = true;

            if(runningServiceInfo.foreground)
            {
                //service run in foreground
            }
        }
    }
    return serviceRunning;
}

【讨论】:

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