android - Android:从服务调用片段方法
问题描述
运行 Firebase Cloud 消息服务,并且我希望每次收到新消息时都会调用特定片段中的方法。
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){
}
}
}
解决方案
您可以使用LocalBroadcastManager
服务:
private void notifyFragment(String json){
Intent intent = new Intent("nameOfTheAction");
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("nameOfTheAction");
bm.registerReceiver(onJsonReceived , 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);
}
推荐阅读
- java - isNetworkConnected() Android Pie 9.0 的问题
- python - 如何在 python 中实现'sqlite3_busy_timeout'?
- firebase - 每次在firebase实时数据库中添加新孩子时,如何更新flutter应用程序中的列表
- python-3.x - 函数“collect_vertex_marginals”在文档示例中返回错误
- javascript - 如何使用 Jquery 从 Button 切换阅读更多内容?
- android - RxJava 过滤器不发出结果来订阅
- mysql - 我需要一些关于查询的解释,mysql
- java - 如何更改cardview的背景颜色并保存更改?
- javascript - 对象作为 React 子对象无效(找到:[object Promise])
- powershell - New-Mailbox 命令不接受 -Equipment 参数