从主线程中的Firebase服务访问数据



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

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

我的清单中宣布了firebase服务为

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

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

我可以在firebase服务上使用一个处理程序吗?

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

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

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

接下来,致电发送意图 LocalBroadcastManager.SendBroadcast()。这将意图发送到任何 您的应用程序中已注册以接收它的组件。

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

要接收广播意图对象,请使用 广播员。在子类中,实施 BroadcastReceiver.onReceive()回调方法,哪个 LocalBroadcastManager收到意图时会调用它。 LocalBroadcastManager将传入的意图传递给 BroadcastReceiver.onReceive()

在 系统,获取LocalBroadcastManager的实例,并调用其 registerReceiver()方法。

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

这是我的消息传递

Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("title", fcmTitle);
    intent.putExtra("summary", fcmSummary);
    intent.putExtra("message", fcmMessage);
    intent.putExtra("imageUrl", fcmImageUrl);
    intent.putExtra("goto", fcmGoto);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(App.getAppContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);

您可以有这样的东西可以在主要活动中聆听

Boolean bolGoto = false;
    if (getIntent().getExtras() != null) {
        for (String key : getIntent().getExtras().keySet()) {
            //String value = getIntent().getExtras().getString(key);
            if (key.equals("goto")){
                bolGoto = true;
            }
        }
    }
    if (bolGoto){
        handleFCMNotification(getIntent());
    }

相关内容

  • 没有找到相关文章

最新更新