private void unListenService(String type, boolean notify) {
   if (null != mDiscoverListener && notify) {
     mDiscoverListener.onDiscoverStopped(type);
   }
   if (null != mJmDNS) {
     mJmDNS.removeServiceListener(mType, mJmDNSListener);
   }
 }
 private void stopMDNS() throws IOException {
   if (jmdns != null) {
     for (JmDNS mdns : jmdns) {
       if (mdns == null) {
         continue;
       }
       Log.i(TAG, "Stopping GameClient discovery " + mdns.getName());
       mdns.removeServiceListener(SERVICE_TYPE, GameClient.this);
       mdns.close();
       mdns = null;
     }
   }
 }
 private void destroyService(ZeroServiceInfo zsi, boolean notify) {
   if (null == mJmDNS) {
     if (notify) {
       mServiceListener.onServiceUnregistered(zsi);
     }
     return;
   }
   try {
     releaseMulticastLock();
     mJmDNS.removeServiceListener(mType, mJmDNSListener);
     mJmDNS.unregisterAllServices();
     mJmDNS.close();
     mJmDNS = null;
     if (null != mServiceListener && notify) {
       mServiceListener.onServiceUnregistered(zsi);
     }
   } catch (Exception e) {
     Log.e(TAG, "failed to close the JmDNS service");
     if (null != mServiceListener && notify) {
       mServiceListener.onServiceUnregisteredFailed(zsi);
     }
   }
 }