Create a local broadcast receiver
When you receive a notification at FirebaseMessagingService, you will send the data to the activity that you need with a LocalBroadcastReceiver. It's easy and safe.
On your FirebaseMessagingService
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
//Take the data from message received
String myData = remoteMessage.get("MyDataKey");
//Send data through a local broadcast receiver
Intent intent = new Intent("IntentFilterAction");
intent.putExtra("MyDataKey", myData);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
On activity onCreate
//Create BroadcastReceiver
BroadcastReceiver broadcastReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
//Get data from intent
String mydata = intent.getExtras
}
};
IntentFilter intentFilter = new IntentFilter("IntentFilterAction");
LocalBroadcastManager.getInstance(getContext()).registerReceiver(broadcastReceiver, intentFilter);
On activity onDestroy
//Unregister BroadcastReceiver
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(broadcastReceiver);
Hope it helps :)