在单个节点下存储大约5000个子节点时,使用离线功能时初始化firebase会变得非常慢.执行第一个查询需要大约30秒.初始化后,执行后续查询(例如列出前25个子节点)只需不到一秒钟.
我正在使用以下属性来启用脱机功能:Firebase.getDefaultConfig().setPersistenceEnabled(true); firebase.keepSynced(真);
我的结构看起来像这样:
<root>
|-my-app-name
|-<uid>
|-node
|-sub node 1
|-...
|-sub node 5000
Run Code Online (Sandbox Code Playgroud)
在<uid>节点上设置保持同步.子节点显示在Recycler视图中.最好,我想列出所有(而不是每页25个),但我知道这是不可能的,因为没有可用于Firebase的类似Cursor的机制(因为Android提供了SQLite).
这是设计,我是否修改了我的数据结构?或者我可以用另一种方式减少初始化时间吗?
我在下面提供了一些记录.如您所见,正在进行大量垃圾收集.Firebase在初始化时是否评估整个数据库?
谢谢!尼尔斯
04-01 15:59:12.029 2222-2245/abcdef I/art: Background sticky concurrent mark sweep GC freed 43005(1717KB) AllocSpace objects, 0(0B) LOS objects, 4% free, 31MB/32MB, paused 5.674ms total 57.402ms
04-01 15:59:13.415 2222-2240/abcdef W/art: Suspending all threads took: 6.600ms
04-01 15:59:13.424 2222-2245/abcdef W/art: Suspending all threads took: 9.339ms
04-01 15:59:13.433 2222-2245/abcdef I/art: Background sticky concurrent mark sweep GC freed 7097(281KB) AllocSpace objects, 0(0B) LOS objects, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个处理组织成员和付款的应用程序.我有以下实体:
Organization---+
|
+---Members-----+
| |
| +---Children
+---Accounts
|
+---Payments
Run Code Online (Sandbox Code Playgroud)
每个组织可以支付> 100,000,但只有少数会员和帐户.当会员登录后,他只能看到他的付款.管理员登录后,他应该能够访问所有数据.
问题是:
谢谢.