谁面临同样的错误,并能解决它?
android.net.nsd.NsdManager.registerService(NsdManager.java:485)已经在使用的侦听器:java.lang.IllegalArgumentException
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setServiceName(myServiceName);
serviceInfo.setServiceType(AppConfig.NSD_SERVICE_TYPE);
serviceInfo.setPort(AppConfig.VIDEO_CALL_PORT);
nsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, registrationListener);..。
NsdManager.RegistrationListener registrationListener = new NsdManager.RegistrationListener() {
@Override
public void onServiceRegistered(NsdServiceInfo serviceInfo) {
try {
// Android may have changed it in order to resolve a conflict, so update the name
myServiceName = serviceInfo.getServiceName();
nsdManager.discoverServices(AppConfig.NSD_SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, discoveryListener);
} catch (Exception e) {
AppUtil.logErrorBaseOnMode(e);
}
}
@Override
public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
// todo
// Registration failed! Put debugging code here to determine why.
}
@Override
public void onServiceUnregistered(NsdServiceInfo arg0) {
// todo
// Service has been unregistered. This only happens when you call NsdManager.unregisterService() and pass in this listener.
}
@Override
public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
// todo
// Un-registration failed. Put debugging code here to determine why.
}
}发布于 2018-01-05 15:39:26
我相信你只需在每次注册时使用新的侦听器。每次启动服务注册时,都必须创建新的RegistrationListener对象。
如下所示:
nsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, new NsdManager.RegistrationListener() {...});对于服务解析,也必须做同样的事情。
请参阅更多信息:文档
https://stackoverflow.com/questions/47797493
复制相似问题