2015-04-27 2 views
0

Я создаю приложение, использующее Network Service Discovery, назовем его «Wi-Fi Chat». И в какой-то момент я хочу отменить регистрацию службы, созданной ранее, чтобы избежать создания бесчисленных копий. Но проблема в том, когда я кал;Отмена регистрации в приложении, использующем NSD

mNsdManager.unregisterService(mRegistrationListener); 

У меня ошибка «прослушиватель не зарегистрирована». Чтобы убедиться, что у меня есть STILL THE SAME объекта этого слушателя, я даже инициализировал его в классе, который расширяет класс Application, и все же я получаю эту ошибку. Итак, вопрос: как правильно отменить регистрацию? Спасибо заранее.

Кроме того, я просмотрел образец приложения «NsdChat», и он сбой в той же точке с той же ошибкой!

+0

Где вы регистрируете слушателя –

ответ

0

Ну, я нашел решение. Огромное спасибо this Wizard, который исправил пример NsdChat Google.

Решение: в Teardown() метод, внутри которого мы называем unregisterService (RegistrationListener слушатель), мы должны сделать это

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

Хотя я до сих пор понятия не имеют, как на самом деле это работает, так что если у вас есть какие-либо мысли по этой головоломке, пожалуйста, напишите ответ

Смежные вопросы