:オフライン(Firebase setOffline()) Firebase setOffline()およびオフラインのデータを読み込む(アンドロイド)
- ユーザーは、私が(データを保存するリストビューなどを投入) - ValueEventListenerとChildEventListenerが火
- いけない私は、データがある
- Firebaseインスタンス上setOnline()を設定しますwebと同期して表示(リスナーの火)
- setOffline()を再度設定しました。
- 私は
質問ローカルデータを保存し、ローカルデータを読み、作品(リスナー火):
オンライン行く前に保存されたローカルデータを読み取る方法を?
シナリオは次のとおりです。ユーザーは、Androidアプリをオフラインで使用して登録して後で決める
シナリオ1:
私はこれにコードを変更し、実行シナリオ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) {
...
}
});
:
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つのセグメント(コードブロック)を追加しました。
- 私は、最初のブロックを実行
- 第3のブロックに動作します - gist with the codeです。ここ
に動作します。
問題は、最初のブロックはsetOnline(とオンラインになる前に動作しないということである)
申し訳ありませんが、あなたの説明を解析するのに苦労しています。スニペットとして問題を再現するコードを表示できますか? –
https://gist.github.com/ramden/3addea21cf925ecd3c8c380f78679ad9 – ramden
ありがとうございます。私はリンクに腐敗する傾向があるので、質問に追加しました。シナリオ1では、データを同期させる前にクライアントを強制的にオフラインにするので、実際にはそのシナリオでは 'onDataChange()'を起動しないと予想しています。 3番目の断片では、ローカルキャッシュにデータを同期させる機会があったため、それは起動します。 –