[Fix]解决取消注册时出现的IllegalArgumentException问题
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user