0

この例では、ブロードキャストレシーバーがインテントサービスを開始します。IntentServiceインスタンスでは、runIntentInServiceというメソッドを開始します。このメソッドは、サービスを開始するよりも、PowerManager.WakeLockオブジェクトを開始します。

ここで、(mainActivityから)登録プロセスを手動で開始すると、次のようになります。

    Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
    // sets the app name in the intent
    registrationIntent.putExtra("app", PendingIntent.getBroadcast(mainActivity.this, 0, new Intent(), 0));
    registrationIntent.putExtra("sender", _senderID);
    startService(registrationIntent);

IntentServiceでは、PowerManager.WakeLockのオブジェクトはまだ初期化されていないため、nullになります。

このコードを使用して、mainActivityから登録します。代わりに以下を使用する必要がありますか?

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}

ありがとう!

4

1 に答える 1

0

GCMRegistrar は、あなたが言及したのとまったく同じことを行う単なるヘルパー クラスです。つまり、レジスタ インテントの送信などです。そのため、コードを変更する必要はありません。

于 2012-07-04T11:27:46.530 に答える