我在这里阅读了有关如何接收 GCM 消息的信息:http: //developer.android.com/google/gcm/client.html - 我说的是标题:接收下游消息。有一个说明:使用 WakefulBroadcastReceiver 不是必需的。如果您有一个不需要服务的相对简单的应用程序,您可以在常规 BroadcastReceiver 中拦截 GCM 消息并在那里进行处理。一旦你得到 GCM 传递给你的广播接收器的 onReceive() 方法的意图,你如何处理它取决于你。
当收到 GCM 消息时,我只想从中提取标题并将其放在通知区域中,这样当用户单击它时,它将打开带有特定片段的我的应用程序。当然,当该消息到达时,设备可能处于睡眠状态。
广播接收器示例是这样的:
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Explicitly specify that GcmIntentService will handle the intent.
ComponentName comp = new ComponentName(context.getPackageName(),
GcmIntentService.class.getName());
// Start the service, keeping the device awake while it is launching.
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
所以这里有几个问题:
1)唤醒广播接收器仅仅是为了防止设备进入睡眠状态,或者在消息到达时唤醒它?
2) 我怎么知道我需要一个普通的广播接收器还是一个唤醒的接收器?
3) 假设我有多个广播接收器,应用程序如何知道消息到达时使用哪个接收器?
4)如果我只想提取标题并将其放在通知区域中,而不是调用使用广播接收器意图的意图服务,我应该只处理广播接收器本身内部的意图吗?