[Fix]解决同一个局域网内有多个相同service导致的崩溃问题

This commit is contained in:
chenfufeng
2022-02-25 18:42:02 +08:00
parent aea8aeb11d
commit 197e9e6670

View File

@@ -21,7 +21,6 @@ public class NsdClient {
private final String NSD_SERVER_TYPE = "_http._tcp.";
private NsdManager.DiscoveryListener mDiscoveryListener;
private NsdManager.ResolveListener mResolverListener;
private NsdManager mNsdManager;
private Context mContext;
private String mServiceName;
@@ -57,7 +56,6 @@ public class NsdClient {
mNsdManager = (NsdManager) mContext.getSystemService(Context.NSD_SERVICE);
initializeDiscoveryListener();
mNsdManager.discoverServices(NSD_SERVER_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
initializeResolveListener();
}
/**
@@ -97,12 +95,11 @@ public class NsdClient {
Log.e(TAG, "onServiceFound()");
//根据咱服务器的定义名称,指定解析该 NsdServiceInfo
if (serviceInfo.getServiceName().equals(mServiceName)) {
mNsdManager.resolveService(serviceInfo, mResolverListener);
mNsdManager.resolveService(serviceInfo, getResolveListener());
} else {
mHandler.sendEmptyMessage(MSG_NULL);
}
mNsdServiceInfoListBefore.add(serviceInfo);
}
@Override
@@ -139,8 +136,8 @@ public class NsdClient {
/**
* 解析未 调用未被解析的 NsdServiceInfo
*/
private void initializeResolveListener() {
mResolverListener = new NsdManager.ResolveListener() {
private NsdManager.ResolveListener getResolveListener() {
return new NsdManager.ResolveListener() {
@Override
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
Log.e(TAG, "onResolveFailed()");