Android-内存成本-Firebase实时数据库x Room持久性库
调试Firebase实时数据库方法Android-内存成本-Firebase实时数据库x Room持久性库,android,firebase,memory,firebase-realtime-database,android-room,Android,Firebase,Memory,Firebase Realtime Database,Android Room,调试Firebase实时数据库方法ValueEventListener.onDataChange,DataSnapshot从云中加载所有数据 考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度) 我希望实现这两个功能,使用Firebase实时数据库每天更新存储本地数据和房间数据库。对于这种方式,根据用户交互,只需将必要的数据加载到设备的内存中 考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度) 最好的解决办法是使用限制。这是有关Firebase实时数据库的官方文档。如您
ValueEventListener.onDataChange
,DataSnapshot
从云中加载所有数据
考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度)
我希望实现这两个功能,使用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
在这种情况下,应在所需属性上创建索引。没有它,服务器无法为您进行排序/筛选,而这将在客户端完成。这意味着客户端必须读取所有数据并将其保存在内存中,从而解释了巨大的内存使用量
解决办法很简单。使用时,应在所需的属性上定义索引。它可以简单到:
{
"rules": {
"codes": {
".indexOn": "yourProperty"
}
}
}
你的解释很好,我不知道这个Firebase索引功能。但我认为我需要改变我的JSON数据模型,使索引可行。目前,我的数据模型遵循以下模式:为了提高Firebase查询的可用性,我认为数据库模型必须是这样的:构建Firebase数据库没有完美或唯一的解决方案。最好的解决方案是适合您的需要并使您的工作更轻松的解决方案。如果该模式最适合您,那么就继续使用它。在FialBASE中添加大量数据是一种常用的方法。如果你认为我的答案对你有帮助,请考虑接受并投票表决。我会很感激的。谢谢