从GCM onMessage()调用MainActivity中的方法

时间:2013-02-02 12:09:05

标签: android google-cloud-messaging

我希望当 onMessage()收到 GCMIntentService.java 内的新消息时, onMessage()会调用名为 MainActivity.java 中的blinkLED(),因此 blinkLED()方法可以使用 onMessage()收到的数据,我该如何实现呢?示例代码会有所帮助。

1 个答案:

答案 0 :(得分:6)

使用BroadcastReceiver。这个tutorial向您展示了如何从类发送广播意图,并让另一个类处理它。

简短示例,在您的GCMIntentService :: onMessage()中,您可以拥有:

Intent intent = new Intent();
intent.setAction("com.my.app.blinkled");
sendBroadcast(intent); 

然后在MainActivity中,实现BroadcastReceiver:

private class MyBroadcastReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    blinkLED();
  }
} 

并在MainActivity的onResume()中注册它:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.my.app.blinkled");
receiver = new MyBroadcastReceiver();
registerReceiver(receiver, intentFilter);