Sie müssen sicherstellen, dass Sie nicht in einem Listener-Objekt unterwegs sind, die bereits registriert worden ist . Sie können das Commit sehen, das zu dieser Verhaltensänderung führte here. Hier
ist die Commit-Nachricht Text:
Dokument und durchzusetzen „eine Anforderung pro Listener“ -Regel
Die API und Implementierung von NsdManager implizieren, dass ein separater Listener verwendet werden soll für jede aktive Registrierung oder Entdeckung Anfrage. Dies ist nicht offiziell dokumentiert oder ordnungsgemäß durchgesetzt, und seltsame und unvorhersehbare Dinge passieren, wenn eine Anwendung einen Listener für mehr als eine Anfrage auf einmal verwendet.
Dokumentation aktualisieren, um dies explizit zu machen.
Erzwingen Sie die Einschränkung, wenn eine neue Anfrage für Verarbeitung eingereicht wird; Wenn der Listener bereits zum Verfolgen einer aktiven Anfrage verwendet wird, werfen Sie eine Ausnahme aus.
Dokument die Tatsache, dass Anwendungen sollten Dienste deregistrieren und Service Entdeckungen kündigen, wenn die App beendet wird (in KitKat und vor Mitteilungen, sie undicht werden, wenn dies nicht der Fall ist.)
Re-order " Lassen Sie den Listener "Vorgang, der vor dem Listener Callback stattfinden soll, damit der Listener von der Anwendung erneut verwendet werden kann, sobald der Rückruf eingegeben wurde - dies beseitigt eine Race Condition. Dokumentieren Sie dies.
Pass 2: Tippfehler, zusätzliche Dokumentation zu API-Ebene, geändert in Verwendung von ein explizit definierter Rückgabewert für "Busy Listener".
Auch nur eine Warnung, dass, wenn Sie das NsdChat Beispielprojekt aus der Android Developers-Website heruntergeladen (das heißt NsdChat.zip
oder etwas in diese Richtung), dass der Projektcode wahrscheinlich nicht mehr aktuell ist.
Versuchen Sie stattdessen, den neuesten Code für den Master-Zweig zu verwenden. Sie können ihn kopieren und in Ihr Beispielprojekt von here einfügen.
Vielleicht hängt Ihr Problem mit diesem gemeldeten Fehler zusammen? https://code.google.com/p/android/issues/detail?id=56830 – Okas
@Okas Ich benutze Android L und ich habe diesen Fehler nie erhalten. – Kenny
Haben Sie jemals eine Lösung gefunden? Ich bekomme diesen Fehler auch auf meinem Lollipop-Gerät, aber nicht auf meinen anderen Geräten. –