WRT разъединения: я только наблюдал сторону первооткрывателя этого неудачного рукопожатия и не видел никаких исключений в журнале. Будут ли упомянутые исключения на стороне рекламодателя? Могу ли я что-нибудь сделать, чтобы сгладить процесс, кроме установки бета-версии Google Play?

аюсь использовать Nearby Connections 2.0 сP2P_CLUSTER Стратегия подключения, и у меня возникают проблемы с подключением устройств и сохранением связи. Согласно моим журналам трассировки, похоже, что устройства успешно подключаются, а затем мгновенно отключаются.

Обратите внимание, что он также иногда успешно проходит через тот же код, а затем остается подключенным. Я не знаю, что заставляет это работать иногда и терпеть неудачу другие времена, и я не знаю, почему узлы автоматически отключаются. Тем не менее, я уверен, что «отключение» не выдается в моем коде. Это происходит от чего-то на более низком уровне.

Вот последовательность событий, которые я сейчас наблюдаю:

мы обнаруживаем другой узел (т. е. выполняем обратный вызов onEndpointFound), а затем выдаем requestConnectionмы нажали onConnectionInitiated для этой конечной точки. (Проверяя здесь info.isIncomingConnection (), не имеет значения, был ли это ответ на наш собственный запрос или запрос, инициированный в другом месте.)мы выдаем acceptConnection (и переводим наш статус в ОЖИДАНИЕ)мы ударяем onConnectionResult со статусом «успех». Все хорошо (и обе стороны кратко думают, что они связаны).сразу после этого мы нажимаем на Disconnected (и обе стороны переходят в неизвестный статус)Обновление: добавлена ​​задержка 200 мс перед acceptConnection

Это было большим улучшением, и устройства почти всегда устанавливают успешное (и длительное) соединение сейчас. Однако иногда требуется 2-3 попытки.

Например, вот что произошло при запуске простого тестового примера (с одним рекламным устройством и одним устройством обнаружения, без осложняющих факторов). С точки зрения Первооткрывателя это выглядело так:

мы попалиonEndpointFound а такжеrequestConnectionмы попалиonConnectionInitiated за соединение, которое мы просили, и принять егомы попалиonConnectionResult с успешным подключением.очень скоро после этого мы ударилиonDisconnectedмы останавливаем обнаружение, ждем 3 секунды, возобновляем обнаружениемы повторяем все вышеперечисленное во второй раз, снова отключаясь

Но, выполнив процесс подключения в третий раз, мы получили хорошее постоянное соединение и смогли надежно отправлять и получать данные.

Обновление: исключение на стороне рекламодателя, вызывающее отключение?

Я поймал длинную серию этих автоотключений. Каждый раз рекламодатель имел это исключение как раз перед тем, как их отключили.

10-09 19:17:26.365 29232-29232/? E/SearchServiceStarter: Task 174 failed or timed out. Client 128565203126930423 disconnecting from SearchService!
                                                     java.util.concurrent.CancellationException: Task was cancelled.
                                                         at com.google.common.util.concurrent.d.cp(SourceFile:75)
                                                         at com.google.common.util.concurrent.d.get(SourceFile:57)
                                                         at com.google.common.util.concurrent.cj.n(SourceFile:2)
                                                         at com.google.common.util.concurrent.ay.l(SourceFile:50)
                                                         at com.google.common.util.concurrent.ba.run(SourceFile:5)
                                                         at com.google.android.apps.gsa.shared.util.concurrent.a.bc.run(SourceFile:2)
                                                         at android.os.Handler.handleCallback(Handler.java:808)
                                                         at android.os.Handler.dispatchMessage(Handler.java:103)
                                                         at android.os.Looper.loop(Looper.java:193)
                                                         at android.app.ActivityThread.main(ActivityThread.java:5299)
                                                         at java.lang.reflect.Method.invokeNative(Native Method)
                                                         at java.lang.reflect.Method.invoke(Method.java:515)
                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:831)
                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
                                                         at dalvik.system.NativeStart.main(Native Method)

Помогает ли это вам диагностировать проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос