我在我的应用程序中使用GCM。用户要做的第一件事就是登录应用程序。当他发送数据时,如果登录正常,我会调用GCMRegistrar.register。如果设备已成功注册,我将打开一个新活动,否则我希望保持相同的活动并显示错误消息。
我发现的问题是GCM寄存器是异步的,我想停止活动的执行,直到它结束。我尝试了以下方法:
GCMRegistrar.register(this, SENDER_ID);
GCMApplication app = (GCMApplication) getApplication();
while(!app.isGcm_registered()){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
当注册结束时,我在我的应用类中将gcm_registered设置为true。但是,如果我这样做,寄存器调用被阻止,我的GCMIntentService中的onRegistered函数永远不会被调用。如果我不阻止执行,寄存器就会成功完成。
如何在注册结束前阻止活动的执行?