0
以下情况:未注册火力地堡setOffline()和脱机阅读资料(Android)
- 用户,我保存数据,同时离线(火力地堡setOffline())
- 无法读取本地数据(填充的ListView等) - 在ValueEventListener和ChildEventListener不火
- 我在火力地堡例如设置setOnline()
- 数据是与网络同步并显示(侦听器触发)
- 我再次设置了setOffline()。
- 我保存本地数据和读取本地数据,工程(听众火)
问题:存储在上网之前
如何读取本地数据?
的情况是:用户使用的Android应用程序脱机,之后决定将注册
方案1:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseDatabase.getInstance().goOffline(); // <--------NOTE THIS
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(App.get().getUid()).child("items").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// THIS IS NOT FIRING
}
@Override
public void onCancelled(DatabaseError databaseError) {
...
}
});
方案1后,我更改代码,这和运行:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseDatabase.getInstance().goOnline(); // <--------NOTE THIS
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(App.get().getUid()).child("items").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// THIS IS FIRING. ALL GOOD
}
@Override
public void onCancelled(DatabaseError databaseError) {
...
}
});
在此之后,我将代码更改为以下,它的工作原理
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseDatabase.getInstance().goOffline(); // <--------NOTE THIS
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(App.get().getUid()).child("items").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// THIS IS FIRING. ALL GOOD
}
@Override
public void onCancelled(DatabaseError databaseError) {
...
}
});
我加了3段(代码块)。
- 我执行第一个块 - 不工作
- 第二块 - 工程
- 第三块 - 工程
这里是一个gist with the code。
问题是,第一块不setOnline()在线是之前工作
对不起,我很难解析你的描述。您能否将代码重现为代码片段? –
https://gist.github.com/ramden/3addea21cf925ecd3c8c380f78679ad9 – ramden
感谢您的代码。我将它添加到问题中,因为链接倾向于腐烂。由于您在客户端有机会同步任何数据之前强制客户端在场景1中脱机,因此我确实希望它不会在该场景中触发'onDataChange()'。在第三个片段中,它*将会触发,因为它有机会将数据同步到本地缓存。 –