我在我的安卓应用中实现了GCM功能,并且成功地接收了消息。BroadcastReceiver已经按照Google提供的示例在清单文件中设置好了。
我的问题是:如果用户正在使用该应用程序并且我想要在视图中更新一些结果,怎么做?我最初考虑将此活动注册为监听器,以便在BroadCastReceiver接收到任何内容时通知它。然而,这必须是一个静态监听器列表,因为会设置新的BroadcastReceiver实例,但也许这不是正确的方法。
这是我目前拥有的。
以下是manifest文件中的重要部分:
我的问题是:如果用户正在使用该应用程序并且我想要在视图中更新一些结果,怎么做?我最初考虑将此活动注册为监听器,以便在BroadCastReceiver接收到任何内容时通知它。然而,这必须是一个静态监听器列表,因为会设置新的BroadcastReceiver实例,但也许这不是正确的方法。
这是我目前拥有的。
public class GCMBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ComponentName comp = new ComponentName(context.getPackageName(),
GCMIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
public class GCMIntentService extends IntentService {
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
public GCMIntentService() {
super("GCMIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
if (!extras.isEmpty()) {
if (GoogleCloudMessaging.
MESSAGE_TYPE_MESSAGE.equals(messageType)) {
/** How to check if the activity
GameActivity is running, and hence send an
update signal to it? If it's not running a
notification should be created.
**/
}
}
GCMBroadcastReceiver.completeWakefulIntent(intent);
}
}
以下是manifest文件中的重要部分:
在manifest文件中,以下是关键部分:
<receiver
android:name="q.w.e.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="q.w" />
</intent-filter>
</receiver>
<service android:name="q.w.e.gcm.GCMIntentService" />
有什么建议吗?
谢谢!