如何区分运行服务和绑定服务?

时间:2014-04-01 12:07:56

标签: android service android-service

我有服务A ,需要通知其他服务B 。我通过调用以下不应启动服务的方法将服务B 绑定到服务A ,如this question中所述。

 serviceA.bindService(new Intent(serviceA, ServiceB.class), conn, 0);

但是,当我想检查服务是否正在运行时,方法返回true,即使服务刚刚绑定。

public static boolean isServiceRunning(Context context) {
    ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (ServiceB.class.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

为什么isServiceRunning对刚刚绑定且未运行的服务返回true(我通过查看设置中正在运行的应用程序检查该服务未运行)?

1 个答案:

答案 0 :(得分:0)

绑定服务时,它由系统启动,bindservice()实际启动服务。

绑定服务是Service类的一种实现,它允许其他应用程序绑定到它并与之交互。要为服务提供绑定,必须实现onBind()回调方法。此方法返回IBinder对象,该对象定义客户端可用于与服务交互的编程接口。

查看Android document了解更多信息。