一尘不染

侦听器已在使用中(服务发现)

java

我无法解决一项服务,而另一项正在解决?如果那是错误的意思,那么等待解决问题的方法是什么?

@Override
public void onServiceFound(NsdServiceInfo service) {
    Log.d(TAG, "Service found. " + service);
    if (service.getServiceType().equals(SERVICE_TYPE)) {
        if (service.getServiceName().contains(mServiceName)) {
            mNsdManager.resolveService(service, mResolveListener);
        }
    }
}

java.lang.IllegalArgumentException:侦听器已在android.net.nsd.NsdManager.resolveService(NsdManager.java:613)处使用,位于com.example.miguel.broadcast.LocalService
$ 2.onServiceFound(LocalService.java:145)


阅读 203

收藏
2020-12-03

共1个答案

一尘不染

您不必等待!如果您在Javadocs中查看resolveService(NsdServiceInfo
serviceInfo,NsdManager.ResolveListener监听器)
则会注意到对于参数监听器,它说的是“成功或失败时接收回调。不能为null。不能用于活动服务解析度。”

因此,为了使它起作用,只需执行以下操作:

mNsdManager.resolveService(service, new MyResolveListener());

MyResolveListener在哪里:

private class MyResolveListener implements NsdManager.ResolveListener {
        @Override
        public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
            //your code
        }

        @Override
        public void onServiceResolved(NsdServiceInfo serviceInfo) {
            //your code
        }
    }

希望这可以帮助 :)

2020-12-03