取消注册使用NSD的应用程序中的服务

时间:2015-04-27 19:40:30

标签: android android-wifi wifip2p

我正在制作一个使用网络服务发现的应用程序,我们将其称为“Wi-Fi聊天”。在某些时候,我想取消注册之前创建的服务,以避免创建无数的副本。但问题是,当我加油时;

mNsdManager.unregisterService(mRegistrationListener); 

我收到“监听器未注册”错误。为了确保我拥有该侦听器的STILL SAME对象,我甚至在扩展Application类的类中初始化它,但仍然出现此错误。那么,问题是:如何正确注销服务?提前谢谢。

另外,我查看了“NsdChat”示例应用程序,它在同一点崩溃并出现同样的错误!

1 个答案:

答案 0 :(得分:0)

好吧,我找到了一个解决方案。非常感谢this Wizard修复了NsdChat Google的例子。

解决方案是:在tearDown()方法中,我们在其中调用unregisterService(RegistrationListener listener)我们应该这样做

public void tearDown() {
        if (mRegistrationListener != null) {
            try {
                mNsdManager.unregisterService(mRegistrationListener);
            } finally {
            }
            mRegistrationListener = null;
        }
    }

虽然我仍然不知道这究竟是如何运作的,所以如果你对这个谜题有任何想法,请发表答案