[Fix]解决取消注册时出现的IllegalArgumentException问题

This commit is contained in:
chenfufeng
2022-06-21 15:32:09 +08:00
parent 0b969b10a6
commit 7eaa1ab7ed
3 changed files with 25 additions and 15 deletions

View File

@@ -13,6 +13,8 @@ public class NSDServer {
private String mServerName;
private final String mServerType = "_http._tcp."; // 服务器type要客户端扫描服务器的一致
private boolean isRegister;
public NSDServer() {
}
@@ -27,6 +29,7 @@ public class NSDServer {
@Override
public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
Logger.e(TAG, "NsdServiceInfo onRegistrationFailed");
isRegister = false;
if (registerState != null) {
registerState.onRegistrationFailed(serviceInfo, errorCode);
}
@@ -35,6 +38,7 @@ public class NSDServer {
@Override
public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
Logger.i(TAG, "onUnregistrationFailed serviceInfo: " + serviceInfo + " ,errorCode:" + errorCode);
isRegister = false;
if (registerState != null) {
registerState.onUnRegistrationFailed(serviceInfo, errorCode);
}
@@ -53,6 +57,7 @@ public class NSDServer {
@Override
public void onServiceUnregistered(NsdServiceInfo serviceInfo) {
Logger.i(TAG, "onServiceUnregistered serviceInfo: " + serviceInfo);
isRegister = false;
if (registerState != null) {
registerState.onServiceUnregistered(serviceInfo);
}
@@ -67,10 +72,13 @@ public class NSDServer {
serviceInfo.setPort(port);
serviceInfo.setServiceType(mServerType);
mNsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
isRegister = true;
}
public void stopNSDServer() {
if (mNsdManager != null) {
// 部分失败的回调会从map中移除key解注册时查不到则会出现异常
// 添加isRegister判断
if (mNsdManager != null && isRegister) {
mNsdManager.unregisterService(mRegistrationListener);
}
}