我正在制作一个使用网络服务发现的应用程序,我们将其称为“Wi-Fi聊天”。在某些时候,我想取消注册之前创建的服务,以避免创建无数的副本。但问题是,当我加油时;
mNsdManager.unregisterService(mRegistrationListener);
我收到“监听器未注册”错误。为了确保我拥有该侦听器的STILL SAME对象,我甚至在扩展Application类的类中初始化它,但仍然出现此错误。那么,问题是:如何正确注销服务?提前谢谢。
另外,我查看了“NsdChat”示例应用程序,它在同一点崩溃并出现同样的错误!
答案 0 :(得分:0)
好吧,我找到了一个解决方案。非常感谢this Wizard修复了NsdChat Google的例子。
解决方案是:在tearDown()方法中,我们在其中调用unregisterService(RegistrationListener listener)我们应该这样做
public void tearDown() {
if (mRegistrationListener != null) {
try {
mNsdManager.unregisterService(mRegistrationListener);
} finally {
}
mRegistrationListener = null;
}
}
虽然我仍然不知道这究竟是如何运作的,所以如果你对这个谜题有任何想法,请发表答案