2

我已遵循此代码:如何在 android 中使用 GCM 获取 RegistrationID

但我想用收到的消息更新TextViewMainActivity请帮助我为什么我不知道如何从服务更新 UI

4

1 回答 1

6

我建议在这里使用广播接收器。因此IntentService将广播该事件,并且所有活动或其他东西都可以注册它。

为了避免过度BroadcastReceivers杀伤(因为它们旨在用于进程间通信并且可能是过度杀伤和安全漏洞) - 我建议使用LocalBroadcastManager- http://developer.android.com/reference/android/support/v4/内容/LocalBroadcastManager.html。它是严格本地广播的助手,更容易处理它们并提供更高的性能和安全性。

更新:

要在 GCM IntentService 中使用 LocalBroadcastReceiver,您应该执行以下操作:

@Override
protected void onMessage(Context context, Intent intent) {
    Intent bIntent = new Intent("custom-event-name");
    // You can also include some extra data.
    bIntent .putExtra("message", intent); //or get some info from Gcm intent and put it into this one.
    LocalBroadcastManager.getInstance(context).sendBroadcast(bIntent);
} 

在这里你可以检查如何在你的活动中注册接收器,这很简单:如何使用 LocalBroadcastManager?

祝你好运

于 2012-09-03T21:26:53.430 回答