2016-02-08 1 views
0

Проблема: onRoomCreated возвращает STATUS_NETWORK_ERROR_NO_DATA 5% времени, без каких-либо причин, которые мы можем выяснить.Андроид в режиме реального времени: onRoomCreated получает неустойчивый STATUS_NETWORK_ERROR_NO_DATA

Игра проработана около 16 месяцев разработки (без проблем с отсутствием «разрешений» в манифесте или в консоли Google Play), но начиная с Google Play Service 29 (это «предположительно» ... это может быть несвязано), это непредсказуемое поведение началось, и оно блокирует любую дальнейшую попытку создать комнату (тот же самый неправильный код состояния снова, даже после перезапуска игры).

Единственный способ заставить его работать снова - либо перезапустить игру через 10-15 минут, либо перезапустить устройство (как правило, работает, но не всегда).

Проблема такая же на 3 различных устройствах (здесь нет эмуляторов).

Что мы обнаружили об этой проблеме (на SO и в других местах), так это то, что она может быть связана с тем, чтобы НЕ покидать комнату (RealTimeMultiplayer.leave (...)), прежде чем пытаться создать новую. Поэтому мы ожидаем ПОСЛЕДУЮТ конец «onLeftRoom» (плюс 3 секунды, на всякий случай), прежде чем пытаться создать новую комнату. Но безрезультатно.

Очевидно, что мы следуем рекомендациям по: инстанцирует GoogleApiClient в OnCreate, .Подайте в OnStart, .disconnect в OnStop (даже если .Подайте на своем пути) ...

Также обратите внимание, что, так как он должен чтобы быть «NETWORK_ERROR», мы проверяем подключение к Интернету (с помощью ping) перед каждой попыткой создать комнату.

Если у вас есть ЛЮБАЯ информация об этой проблеме или если вы знаете, как заставить Google Play создать комнату после этого кода состояния БЕЗ перезапуска устройства, сообщите нам об этом, потому что до тех пор наша дата выпуска, если навсегда отложена. Большое спасибо.

ответ

1

[UPDATE 2]: приложение было переписано, чтобы прекратить создание автоматизированных созданий комнаты (следовательно, менее частые запросы) и ... ничего ... все еще такая же ошибка/проблема/вы-имя-это ... над и более ... затем Google Play обновил приложение «Игры в Google Play» (и, возможно, «услуги»), и это сработало: только один STATUS_NETWORK_ERROR_NO_DATA через 2 недели ... теперь я буду спать 2 месяца, потому что я [отредактированный].

[UPDATE]: согласно this post, STATUS_NETWORK_ERROR_NO_DATA используется для ограничения частоты запросов. Поскольку мы автоматизируем создание комнат и закрытие, это может быть окончательный ответ. Я буду обновлять его снова, когда он будет проверен или нет. Я оставляю остальную часть этого ответа, потому что, хотя это не связано напрямую, не закрывающиеся комнаты также вызывают ошибки. [END OF UPDATE]

Вот ответ на это непредсказуемое поведение (не из SO, но некоторые из вас все еще может быть интересно): в «onStart» и «onStop» все вызовы/запросы в Службы Google Play (с mGoogleApiClient или нет) должны быть сделаны до «super.onStart();» и "super.onStop();".

В противном случае, что происходит после «super.onStop();» будет прервана до его окончания (с некоторой случайностью, добавленной скоростью и нагрузкой устройства), что означает, что любой вызов «.leave» в открытую комнату не удастся, а затем предотвратить создание новой комнаты (следовательно, ошибка STATUS_NETWORK_ERROR_NO_DATA).

Также обратите внимание, что переменная mGoogleApiClient не должна быть объявлена ​​как статическая, и не забудьте вызвать «mGoogleApiClient.disconnect();» в «onStop» (пример «ButtonClicker» не делает этого, когда это рекомендуется в другом месте).

+0

Как вы ожидаете вызова callback onleftroom() при вызове onstop? «Таким образом, мы ожидаем ПОСЛЕДУЮТ конец« onLeftRoom »(плюс 3 секунды, на всякий случай), прежде чем пытаться создать новую комнату». – skymedium

+1

@skymedium: когда вызывается «onStop», комната «левая» (с .leave (...)), но мы не ожидаем onleftroom(), потому что бесполезно создавать новую комнату ... только когда один из двух игроков покидает комнату (и приложение продолжает работать), мы ждем onftftroom, потому что это сигнал о том, что все делается и заканчивается этой конкретной комнатой. –

+0

Я выполнил все ваши инструкции, и я все еще получаю NETWORK_ERROR. Есть ли у вас другие предложения? Можете ли вы поделиться источником своего ответа? – skymedium

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