吽咪呗呢嘛嗡 2023-08-02 12:04 采纳率: 55.6%
浏览 6
已结题

Firebase实时数据库问题

关于Firebase实时数据库监听的一个问题:

我在实时数据监听执行函数里又嵌套了一个监听,在这个监听里又嵌套了一个,总共三层监听,我的问题是,代码的运行逻辑是不是这样的:

第三层监听函数执行完毕以后会返回第二层监听,第二层执行完又返回第一层监听

或者是这样的:

三个监听没有层级关系,是三个独立的线程,第一个监听不会等待第二个监听执行完成再继续自己的代码

有没有了解的人讲一讲

如果是第二种情况,会有一个问题:安卓开辟一个子线程,在这个子线程里开辟的线程跟上一个线程是什么关系,上一个线程销毁的时候,他的子线程会不会一起销毁

  • 写回答

2条回答 默认 最新

  • 田猿笔记 2023-08-02 12:21
    关注

    结给GPT:在Firebase实时数据库监听的情况下,代码的运行逻辑是第一种情况:三个监听有层级关系,它们是嵌套执行的,而不是三个独立的线程。

    当你在实时数据监听函数里嵌套一个监听时,这个嵌套的监听将在数据发生变化时触发,然后执行嵌套监听函数的代码。同样地,如果在嵌套的监听中再次嵌套一个监听,那么第三层监听函数将在第二层监听的数据发生变化时触发,依此类推。

    这种嵌套监听的执行是同步的,也就是说,每个监听都会等待嵌套的监听函数执行完毕才会继续执行其余的代码。因此,第三层监听函数执行完毕后会返回第二层监听,第二层执行完又返回第一层监听。

    关于线程的问题,Firebase的监听器在收到数据变化时,会在后台线程上执行监听函数。当你在监听函数里嵌套一个监听时,嵌套监听的执行仍然在同一个后台线程上进行。所以,在这种情况下,并没有额外开辟新的线程。

    当父监听所在的线程销毁时(例如Activity或Fragment的销毁),嵌套的子监听将会一起销毁,因为它们共享同一个线程。所以你不必担心子线程的销毁问题,Firebase会处理好这些细节。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 8月2日