gpt4 book ai didi

android - 在 Android Firebase 数据库事务的后台线程中工作

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

据我了解,Firebase 实时数据库 Transaction.Handler doTransaction 方法不会在主 UI 线程中运行(请参阅 link)。

在 doTransaction 中使用这个线程来完成一些需要几秒钟才能完成的工作是否可以接受?

public Transaction.Result doTransaction(MutableData mutableData) {
SomeClass p = mutableData.getValue(SomeClass.class);

//-- do something here that will take a few seconds
someLongTask(p);

mutableData.setValue(p);
return Transaction.success(mutableData);
}

我所说的“可接受”是指影响我的其他 Firebase 数据库调用响应能力的唯一因素吗?

有更好的方法吗?

最佳答案

您的事务处理程序确实在 Firebase 数据库 SDK 的运行循环中执行。执行长时间操作将停止所有其他 Firebase 数据库操作(您不会收到任何事件,写入不会发送到后端等),直到您的事务处理程序代码完成并且运行循环可以 catch 。

这基本上会影响性能,但不会引起任何其他问题。所以从这个意义上说,它是“可以接受的”。

但一般来说,不建议在事务处理程序中执行长操作。重要的是要了解事务处理程序在成功之前通常会运行多次。因此,您通常不希望执行任何有副作用的操作(写入文件或 SQL 数据库等),因为这些副作用会发生未知次数。

通常,您可以重新设计逻辑,以便在开始交易之前执行耗时长的操作,但这取决于用例。

关于android - 在 Android Firebase 数据库事务的后台线程中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769132/

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