Это должно быть довольно простое решение. если следовать примеру googles, то регистрация в GCM должна выполняться с использованием класса задач async под названием RegisterApp.
Задача async имеет 3 основных метода OnPreExecute, DoInBackground и OnPostExecute. DoInBackground - это метод, который работает в отдельном потоке, и именно поэтому он не работает в настоящее время. Он не закончил работу с этим потоком, и вы уже отправили пустой регистр на свой сервер. В следующий раз это не будет ошибкой при входе в приложение, потому что более вероятно, что вы сохраните regId в файл и прочитаете его, если ваше приложение уже зарегистрировано в GCM
Вы можете отправить regId на ваш сервер либо в DoInBackground, где вы должны зарегистрироваться в GCM или в OnPostExecute.
Я делаю это в методе DoInBackground прямо после того, как он регистрируется, поскольку это единственная часть, которая работает в отдельном потоке, и если по какой-то причине она не отправляется на мой бэкэнд, она обрабатывается отдельной цепочкой на основной UIThread ,
Не забывайте, что вам также понадобится ваш текущий метод отправки, потому что RegisterApp не будет работать, если ваше приложение уже зарегистрировано.
Надеюсь, это поможет.
Это образец, которым я пользовался. Here
В настоящее время это работает для меня, поскольку деятельность, которая обрабатывает регистрацию, заблокирована на портрете, и не так уж много происходит, но каждый в отдельности.
Артур делает некоторые действительные пункты
мммм. Я только что посмотрел образец, который вы положили, и В примере, который я использовал, я говорю, чтобы сделать sendRegistrationToServer в DoInBackground задачи async. Мне нравится этот путь, но имеет смысл – Rob85
где вы видите эту инструкцию, которую вы можете связать? –
Я попробую и найду его снова – Rob85