Сообщение о многопользовательской игре в режиме реального времени в Сервисах Google Play

В настоящее время я разрабатываю многопользовательскую карточную игру для Android, и я хотел бы использовать многопользовательский API-интерфейс Google Game Services в реальном времени. Из документации я знаю, что в конце концов каждое сообщение, которое получает клиент, будет вызывать RealTimeMessageReceivedListener() . Мой вопрос: КОГДА вызывается метод, если мое приложение в настоящее время находится в рабочем состоянии?

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

Итак, если я запускаю многопользовательскую часть в потоке контроллера, поток моего приложения просто остановится при вызове MessageReceiver, будет выполнять в нем какие-то действия, а после этого продолжится в своей старой позиции, как программное прерывание, или это вызов MessageReceiver буферизуется и вызывается после завершения всего остального. Если это так, я думаю, мне нужно использовать третий поток.

В настоящее время я работаю с libgdx, поэтому никакие специфичные для Android вещи не затрагивались. Может быть, кто-то объединил libgdx с многопользовательским аспектом игровых сервисов Goggle и может рассказать мне больше, потому что в настоящее время я немного потерял, как собрать все это вместе. Я знаю, что есть учебник по реализации игровых сервисов с помощью libgdx, но он не касается многопользовательской части.

Заранее спасибо.


person Kedu    schedule 05.05.2014    source источник


Ответы (2)


Я думаю, вы спрашиваете, в каком потоке будет выполняться RealTimeMessageReceivedListener асинхронный обратный вызов. Насколько я могу судить, обратные вызовы будут выполняться в основном потоке пользовательского интерфейса Android (*1). Этот поток отличается от основного потока пользовательского интерфейса Libgdx (*2).

Это означает, что обратные вызовы службы Google Play могут выполняться независимо от вашей основной логики Libgdx. Если ваши обратные вызовы GPS используют API Libgdx Application.postRunnable, вы можете получить свой основной Поток libgdx для последовательной обработки всех входящих изменений со всем остальным (запускаемые объекты в очереди выполняются в начале каждого цикла рендеринга).

(*1) найдите «thread» в этой записи блога разработчиков Google. Лучшей ссылки я не нашел.

(*2) http://www.badlogicgames.com/forum/viewtopic.php?f=21&t=1298

person P.T.    schedule 06.05.2014

Этот прослушиватель прослушивает сообщения от функции sendReliableMessage. Вы можете проверить все отправленные сообщения здесь Мультиплатер в реальном времени

вы отправляете сообщение в «Google», и оно пересылается другим GoogleApiClients, которые существуют в том же Room

person Community    schedule 05.05.2014
comment
Я знаю эти вещи, но они не отвечают на мой вопрос. Мой вопрос заключался в том, что происходит с вызовом получателя, когда мое приложение в данный момент над чем-то работает. Приостановлена ​​ли текущая задача, и вызывается приемник, и после ее завершения мое приложение возобновляет работу с того момента, когда оно было приостановлено, например, программное прерывание или Android работает с какой-то буферизацией, поэтому все вызовы приемника буферизуются и продолжаются после текущая задача выполнена. Или, что еще хуже, получатель никогда не вызывается, если приложение находится в рабочем состоянии. - person Kedu; 05.05.2014