gpt4 book ai didi

android - Firebase 数据库和 Android : Lack of synchronism using a class for Firebase different from the activity/fragment class

转载 作者:行者123 更新时间:2023-11-29 19:24:40 24 4
gpt4 key购买 nike

我正在使用 Firebase 作为数据库在 Android Studio 中开发一个应用程序,我遇到了一个棘手的问题。我有一个 fragment ,它从一个辅助类中获取一个“pregunta”对象,我在其中对数据库进行实际查询。问题是监听器启动了一个单独的线程来等待事件,但与此同时该方法继续处理并返回空值。

关于如何避免这种异步或更好的实现方式有什么想法吗?谢谢!!

fragment 类:

    mPregunta = mSesionManager.getPregunta(id_pregunta_actual);
TextView view_pregunta = (TextView)view.findViewById(R.id.titulo_pregunta);
view_pregunta.setText(mPregunta.getTxt_pregutna());

辅助类方法:

public pregunta getPregunta(long id){
mp.setId_pregunta(id);

Query query = mDB_Cuestionario.child("Tabla_Preguntas").orderByChild("id").equalTo(id);
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
mp.setTxt_pregutna(dataSnapshot.child("txt").getValue().toString());
Log.e("FBHELPER", "ID LISTENER: "+mp.getId_pregunta());
Log.e("FBHELPER", "TXT LISTENER: "+mp.getTxt_pregutna());
}

[-- rest of code --]
});

Log.e("FBHELPER", "TXT RESPUESTA: "+mp.getTxt_pregutna());
return mp;
}

日志:

The method returns null value: 
01-13 17:16:52.101 8994-8994/com.example.fran.cuestionario E/FBHELPER: TXT RESPUESTA: null

1 second later, the Event occurs, but I can't return the value.
01-13 17:16:53.497 8994-8994/com.example.fran.cuestionario E/FBHELPER: ID LISTENER: 0
01-13 17:16:53.497 8994-8994/com.example.fran.cuestionario E/FBHELPER: TXT LISTENER: TEST VALUE

最佳答案

当您向 Firebase 注册监听器时,该注册不会阻塞正在运行的线程。听众所做的是说:“当数据中的某些内容可用时,请告诉我 - 我知道这不会立即发生,但会在一段时间后发生。”

您必须围绕这些监听器的工作方式来设计您的应用。您必须对来自监听器的传入信息使用react,而不是阻塞其上的任何线程。

关于android - Firebase 数据库和 Android : Lack of synchronism using a class for Firebase different from the activity/fragment class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41640374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com