Android -避免在多个应用程序中并行运行相同的服务



小背景: 我正在开发使用一个后台服务的图书馆。很有可能会有两个或更多的应用程序在同一个android手机上实现这个库。

Q:是否有任何解决方案来防止这个后台服务运行,如果其中一个安装的应用程序已经启动了该服务?我基本上只需要一个bg服务的实例运行,不管有多少应用程序实现了这个带有service的lib。

所以后来我意识到我可以列出所有正在运行的服务,并将名称与我感兴趣的服务相匹配。如果它正在运行,那么我就不会尝试启动另一个。

protected static boolean isMyServiceRunning(Class<?> serviceClass, Context cont) {
    ActivityManager manager = (ActivityManager) cont.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningServiceInfo> list = manager
            .getRunningServices(Integer.MAX_VALUE);
    if (list == null || list.isEmpty()) {
        return true;
    }
    for (ActivityManager.RunningServiceInfo service : list) {
        if (serviceClass.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

如果发现服务正在运行,该方法将返回true。您还可以使用getRunningServiceInfo(x)只列出特定数量的服务。

相关内容

  • 没有找到相关文章

最新更新