【发布时间】:2021-12-29 13:22:15
【问题描述】:
您如何以List 的形式获取数据库根目录中存在的集合的大小。
get().getResult().size() 方法不起作用,它正在抛出 IllegalStateException:“任务尚未完成”。
并且不能在循环中使用异步/回调方法将其值添加到列表中然后返回。
【问题讨论】:
-
您是否有理由不将此尺寸测量放在它自己的线程中,而只是使用
.then()来等待.get()的结果? -
@fabc
.then()不是任何方法。另外,也无济于事。目标是阻塞线程直到它获取结果。 -
.then()是一种方法,但是?对不起,任务使用监听器(虽然then()确实存在用于任务,但它在Continuation.then(Task)中使用)。就像我说的......为什么不把它放在自己的线程中?阻塞主线程会冻结你的应用程序(至少从用户的角度来看,他们认为它很可能崩溃了)。 -
@fabc 如果它阻塞线程,我会将其放入后台线程。但在这里,它是异步的,不等待响应。我希望它在继续循环之前等待响应。
-
为集合设置一个临时值并在收到响应后更新它不是更好吗?否则,在整个循环完成之前,您将无法加载任何内容,这可能需要几秒钟到一分钟。另外,也许它是 cmets 的格式,但是,如果我理解正确,您没有将它放在后台线程中,因为它是异步的,但是您想让它同步,所以您将它放在自己的线程中?另外,不需要包含我的标签,我会根据问题进行适当的回复。
标签: android firebase asynchronous google-cloud-firestore