2011-05-06 7 views
2

Android 앱이 활성화되어있는 동안 zeroconf를 통해 서비스를 등록하도록 시도한 다음 앱이 종료 된 후 등록을 취소합니다. 내 onPause 방법에 연속적으로 다음jmDNS를 사용하여 zeroconf 서비스 등록 해제

// register ourselves with zero conf 
    try { 
     JmDNS jmdns = JmDNS.create(); 

     serviceInfo = ServiceInfo.create("_http._tcp.local.", "My App Service", SERVER_PORT, 0, 0, false, "path=/crazycatapp"); 
     jmdns.registerService(serviceInfo); 
    } catch (Throwable t) { 
     Debug.e("Error registering service with zeroconf", t); 
    } 

와 : 내 onResume 방법에서 나는 다음과 같은 코드가 나는 멀티 캐스트가 가능 않는 코드를 elimintated 한

if(serviceInfo != null) { 

      // unregister ourselves with zero conf 
      JmDNS jmdns = JmDNS.create(); 
      jmdns.unregisterService(serviceInfo); 
     } 
    } catch (Throwable t) { 
     Debug.e("Error unregistering service with zeroconf", t); 
    } 

을 등 요점은 내가한다 서비스를 등록 할 수 있고 다른 장치의 zeroconf 브라우저를 사용하여 볼 수 있습니다. 그러나 일단 등록이되면 실제로 서비스를 등록한 장치에서 WiFi를 비활성화하지 않으면 서비스가 사라지지 않습니다. unregisterService에 대한 호출이 실제로 서비스 등록에 영향을주지 않는 것 같습니다. unregisterAllServices가 아무런 영향을 미치지 않는 것 같습니다. 누구든지 아이디어가 있습니까?

답변

1

JmDNS에서 관련 코드를 살펴본 결과 ServiceInfo을 등록한 동일한 JmDNS 인스턴스에서 등록 취소해야한다고 생각합니다. 따라서 등록 스 니펫에서 jmdns 참조를 유지하고 등록 해제 스 니펫에서 새로 작성한 인스턴스 대신 등록 해제를 호출해야합니다.