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 回答