Android:从服务调用片段方法

问题描述 投票:0回答:1

具有运行中的Firebase Cloud Messenger服务,并且我希望每次收到新消息时,都会调用指定片段中的方法。

public class FirebaseMsgService extends FirebaseMessagingService {
    public FirebaseMsgService() {
    }


    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        ServiceConnector serviceconnector =null;
        JSONObject data;
        String json = remoteMessage.getData().toString();
        try{
        data= new JSONObject(json);

          **Fragment.method(data);** 

        }
        catch(Exception e){


        }




    }

}

android android-fragments firebase-cloud-messaging android-service
1个回答
0
投票

您可以使用LocalBroadcastManager

服务:

Intent intent = new Intent("nameOfTheActionShouldBeUniqueName");
Bundle bundle = new Bundle();
bundle.putString("json", json)); 
intent.putExtras(bundle);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

片段:

LocalBroadcastManager bm;

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    bm = LocalBroadcastManager.getInstance(this);
    IntentFilter actionReceiver = new IntentFilter();
    actionReceiver.addAction("nameOfTheActionShouldBeUniqueName");
    bm.registerReceiver(onProductAddedReceived , actionReceiver);
}


private BroadcastReceiver onJsonReceived = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent != null) {
            String json = intent.getString("json")
            data= new JSONObject(json);
        }
    }
};

@Override
protected void onDetach() {
    super.onDetach();
    bm.unregisterReceiver(onJsonReceived);
}
© www.soinside.com 2019 - 2024. All rights reserved.