0

アプリケーションで 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 が呼び出されることはありません。実行をブロックしないと、レジスターは正常に終了します。

登録が完了するまでアクティビティの実行をブロックするにはどうすればよいですか?

4

0 に答える 0