我是数据库的唯一真实用户(目前正在测试),这是自设置FirebaseDatabase.getInstance()。setPersistenceEnabled(true);以来从数据库下载的数据。
12月12日(红线)-每天约3MB
这是我的数据库的大小:大约80ko。
我可以从我的帐户访问的数据大约是1/4,即20ko。
由于我使用了FirebaseDatabase.getInstance()。setPersistenceEnabled(true);,所以我真的不明白如何在一天内下载约150次我拥有的所有数据。而且我并没有发送太多或删除太多。
那么,如此庞大的消费量又如何解决呢?我曾考虑过使用SQL内部数据库,但我不明白这一点,因为firebase可以轻松地将所有数据存储在磁盘内存中。另外,我认为为了检查下载的数据,侦听器仍会检查每个数据是否有所更改……所以我真的认为这不会有所帮助。
FirebaseDatabase.getInstance()。setPersistenceEnabled(true)并不会真正减少用户支持并仍然下载预先下载的内容吗?
如果一个用户每天使用大约2 MB,那将是1GB / 500users => 1 $,这是非常昂贵的...
我该怎么办?
编辑:
我刚刚进行了测试。我清理了该应用程序的所有存储,并下载了我已经访问过的所有数据(大约20ko)
这是结果:
393ko ...这很奇怪。然后我再次检查了图中的数据,今天我已经下载了1 MB。
我看不到任何解释...唯一看到的是,举例来说,当我尝试在数据库中查找相同内容时,我并不总是使用相同的引用。 例如,在一个活动中,如果我需要获取我使用的用户名
此:
Private DatabaseReference UserRef;
UserRef = FirebaseDatabase.getInstance().getReference().child("Users");
UserRef.child(iD).child("name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
String name = dataSnapshot.getValue().toString(); //do some with name
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
在其他活动中,我将使用相同的功能,但会在其上创建另一个引用。也许确实有所作为,也许下载的数据是两次,而不是一次,因为firebase不知道我在寻找相同的数据,因为我使用另一个变量名作为参考。