@Override public boolean bindService(Intent intent, ServiceConnection connection, int flags) { if (VaporServiceConnection.class.isAssignableFrom(connection.getClass())) { VaporServiceConnection vsc = ((VaporServiceConnection) connection); // We only attempt to bind if we aren't already bound to this // service if (!conns.containsKey(vsc.serviceClass())) { return super.bindService(intent, vsc, flags); } else { Log.w( shortName + ".bindService(Intent,ServiceConnection,int)", "Already bound to " + vsc.serviceClass() + ". To avoid service leaks you must unbind from the service first."); } return false; } else { Log.w( shortName + ".bindService(Intent,ServiceConnection,int)", "This service binding will NOT be managed by Vapor as 'connection' is not an instance of VaporServiceConnection. \nUse .vsc(Class<? extends Service>) to obtain a VaporServiceConnection for your Service"); return super.bindService(intent, connection, flags); } }
@Override public void unbindService(ServiceConnection connection) { if (VaporServiceConnection.class.isAssignableFrom(connection.getClass())) { // attempt cast VaporServiceConnection vsc = ((VaporServiceConnection) connection); // delegate call to new method that can accept just the service // class unbindService(vsc.serviceClass()); } else { Log.i( shortName + ".unbindService(ServiceConnection)", "Unbinding unmanaged ServiceConnection"); super.unbindService(connection); } }