将GcmIntentService的意图发送到当前活动而不启动活动

时间:2014-08-12 14:35:55

标签: android android-intent google-cloud-messaging

如何从GcmItentService向目前正在打开的活动发送意图。在我可以更新活动中的列表之前,我需要来自推送通知的数据。我不想要的是调用startActivity(Intent)(因为很明显活动已经打开)。此外,当活动仍处于打开状态时,不会调用onResume方法。假设我有一个String,我想发送到当前的Activity,我该怎么做才能实现呢?

我已经完成了此主题中所述的内容: Intent Extras of GCMIntentService is not passed ,但我无法让它工作。非常感谢一步一步的简单指导。

1 个答案:

答案 0 :(得分:3)

您可以简单地使用LocalBroadcastManager。

  

帮助注册并向本地对象发送Intent广播   在你的过程中。这比发送有许多优点   sendBroadcast(Intent)的全局广播:

     
      
  • 您知道您播放的数据不会离开您的应用,所以   不必担心泄露私人数据。
  •   
  • 不可能   其他应用程序将这些广播发送到您的应用程序,所以你没有   需要担心他们可以利用安全漏洞。
  •   
  • 更多   比通过系统发送全球广播更有效率。
  •   
Intent intent = new Intent(YOUR_ACTION_NAME);
intent.putExtra("PushType", "test");            
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);

在您的活动中编写一个处理“YOUR_ACTION_NAME”

操作的接收器
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LocalBroadcastManager.getInstance(this).registerReceiver(
            messageReceiver, new IntentFilter("YOUR_ACTION_NAME"));
}


private BroadcastReceiver messageReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {

    }
};

更多详情:LocalBroadcastManager