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

OpE*_*MaR 2 android google-cloud-messaging

我希望当GCMIntentService.java中的onMessage()收到一条新消息时,onMessage()MainActivity.java中 调用一个名为blinkLED()的方法,这样blinkLED()方法就可以使用onMessage()接收的数据,怎么能我实现了吗?示例代码将有所帮助.

azg*_*fer 6

使用BroadcastReceiver.本教程向您展示如何从类发送广播意图,并让另一个类处理它.

简短的例子,在您的GCMIntentService :: onMessage()中,您可能有:

Intent intent = new Intent();
intent.setAction("com.my.app.blinkled");
sendBroadcast(intent); 
Run Code Online (Sandbox Code Playgroud)

然后在MainActivity中,实现BroadcastReceiver:

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

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

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.my.app.blinkled");
receiver = new MyBroadcastReceiver();
registerReceiver(receiver, intentFilter); 
Run Code Online (Sandbox Code Playgroud)