从主线程中的Firebase Service访问数据

时间:2017-02-22 23:06:29

标签: android firebase event-handling firebase-cloud-messaging

我正在编写一个从FCM消息接收一些数据的应用程序,然后根据消息中包含的数据有效负载更新UI。

服务运行正常,并接收数据,但我无法弄清楚如何将其恢复到我的主要活动。

Firebase服务在我的清单中声明为

<service android:name=".MyFirebaseService">
   <intent-filter>
       <action android:name="com.google.firebase.MESSAGING_EVENT" />
   </intent-filter>
</service>

在我的MyFirebaseService类中,我覆盖了onMessageReceived方法,但是我应该如何通知我的主要活动已收到消息?

我可以使用Firebase服务处理器吗?

1 个答案:

答案 0 :(得分:1)

dev.android.com > Develop > Training > Background Jobs > Reporting Work Status

https://developer.android.com/training/run-background-service/report-status.html

  

将IntentService中的工作请求状态发送给其他人   组件,首先创建一个包含其中状态的Intent   扩展数据。

     

接下来,通过调用发送Intent   LocalBroadcastManager.sendBroadcast()。这会将意图发送给任何人   您的应用程序中已注册接收它的组件。

Intent localIntent = new Intent(BROADCAST_ACTION).putExtra(DATA_STATUS, status);
LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent);
  

要接收广播的Intent对象,请使用的子类   广播接收器。在子类中,实现   BroadcastReceiver.onReceive()回调方法,其中   LocalBroadcastManager在收到Intent时调用。   LocalBroadcastManager将传入的Intent传递给   BroadcastReceiver.onReceive()

     

注册BroadcastReceiver和IntentFilter   系统,获取LocalBroadcastManager的实例并调用它   registerReceiver()方法。

 LocalBroadcastManager.getInstance(this)
     .registerReceiver(mDownloadStateReceiver, statusIntentFilter);