Android-内存成本-Firebase实时数据库x房间持久性库



调试Firebase实时数据库方法ValueEventListener.onDataChangeDataSnapshot从云中加载所有数据。

考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备的角度来看(?

我希望实现这两种功能,使用Firebase实时数据库每天更新房间数据库中的存储本地数据。通过这种方式,基于用户交互,只将必要的数据加载到设备的内存中。

考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度来看(?

最好的解决方案是使用限制。这是有关在Firebase实时数据库中过滤数据的官方文档。正如你所看到的,有一些方法可以帮助你实现这一点。

如果你试图加载大量数据,你可能会遇到一个听起来像这样的错误:

OutOfMemoryError. You may need to reduce the amount of data you are syncing to the client. java.lang.OutOfMemoryError: Failed to allocate a 28701016 byte allocation with 16777216 free bytes and 18MB until OOM

在这种情况下,应该对所需的属性创建索引。如果没有它,服务器就无法为您进行排序/筛选,而这将在客户端中完成。这意味着客户端必须读取所有数据并将其保存在内存中,从而解释了巨大的内存使用量。

解决方案非常简单。使用Firebase安全规则,您应该在desired属性上定义一个索引。它可以简单到:

{
"rules": {
"codes": {
".indexOn": "yourProperty"
}
}
}

相关内容

  • 没有找到相关文章

最新更新