リアルタイムのFirebaseデータベースのすべてのデータではなく、ローカルの電話ストレージのFirebaseデータベース(JSON)に特定のパスを保存したかったのです。Firebaseデータベースに各ユーザーのニュースフィードパスがあり、ユーザーのモバイルのローカルストレージに不要なデータ全体をロードするのではなく、ユーザーに指定されたニュースフィードのみを保存したいとします。
Firebase Real-time Databaseは、アクティブなリスナーのデータのローカルコピーを同期して保存します。さらに、特定の場所の同期を維持できます。
DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.keepSynced(true);
これが私の質問の解決策である場合、私はその行を書かなくてもこの行を直接使用できます
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
これらの2ビットのコードは実際には関連していません。彼らは同じことをしません。
keepSynced(true)
アプリが実行されている限り、呼び出された瞬間から、指定された参照でリスナーを効果的にアクティブに保ち、データのローカルバージョンがサーバー上のリモートバージョンと常に同期するようにします。
setPersistenceEnabled(true)
SDKによって読み取られたデータのローカルキャッシュをアクティブ化するだけです。永続性が有効になっている場合でも、アプリは以前に読み取ったデータをクエリできます。SDKによって読み取られたすべてのデータに対して有効になります。永続性が有効になっている間は、どのデータをキャッシュするかを制御することはできません。すべての読み取りデータは最大10MBまでキャッシュされます。最大値に達すると、最も古いデータがキャッシュから削除されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加