我有服务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(我通过查看设置中正在运行的应用程序检查该服务未运行)?
答案 0 :(得分:0)
绑定服务时,它由系统启动,bindservice()
实际启动服务。
绑定服务是Service类的一种实现,它允许其他应用程序绑定到它并与之交互。要为服务提供绑定,必须实现onBind()回调方法。此方法返回IBinder对象,该对象定义客户端可用于与服务交互的编程接口。
查看Android document了解更多信息。