首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android NSD (网络服务发现)注册监听器已经在使用

Android NSD (网络服务发现)注册监听器已经在使用
EN

Stack Overflow用户
提问于 2017-12-13 16:07:24
回答 1查看 1.3K关注 0票数 0

谁面临同样的错误,并能解决它?

android.net.nsd.NsdManager.registerService(NsdManager.java:485)已经在使用的侦听器:java.lang.IllegalArgumentException

代码语言:javascript
复制
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);

..。

代码语言:javascript
复制
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.
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2018-01-05 15:39:26

我相信你只需在每次注册时使用新的侦听器。每次启动服务注册时,都必须创建新的RegistrationListener对象。

如下所示:

代码语言:javascript
复制
nsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, new NsdManager.RegistrationListener() {...});

对于服务解析,也必须做同样的事情。

请参阅更多信息:文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47797493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档