Ниже приведен код из internalRegister
метода GCMRegistrar
классаКакое обслуживание запущено в методе «internalRegister» GCM?
static void internalRegister(Context context, String... senderIds) {
if (senderIds == null || senderIds.length == 0) {
throw new IllegalArgumentException("No senderIds");
}
StringBuilder builder = new StringBuilder(senderIds[0]);
for (int i = 1; i < senderIds.length; i++) {
builder.append(',').append(senderIds[i]);
}
String senders = builder.toString();
Log.v(TAG, "Registering app " + context.getPackageName() +
" of senders " + senders);
Intent intent = new Intent(GCMConstants.INTENT_TO_GCM_REGISTRATION);
intent.setPackage(GSF_PACKAGE);
intent.putExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
PendingIntent.getBroadcast(context, 0, new Intent(), 0));
intent.putExtra(GCMConstants.EXTRA_SENDER, senders);
context.startService(intent);
}
В последней строке кода он запускает сервис, который должен связаться с сервером GCM. сервер GSM, в свою очередь, отправляет вещание com.google.android.c2dm.intent.REGISTRATION
назад. Какая услуга?
Мой вопрос, который «сервис» мы начинаем? –
Эта услуга является частью ОС Android, и у нас нет доступа к исходному коду. Когда вы запускаете сервис с намерением com.google.android.c2dm.intent.REGISTRATION, ОС Android будет обрабатывать его и выполнять регистрацию C2DM/GCM с сервером Google. Я полагаю, что компонент Google Talk, вероятно, принадлежит этой службе. – azgolfer