※ Couchbase Mobile(Couchbase Lite, Syncgateway)に関する記事について、こちらも、参照ください。
ライブクエリとは
ライブクエリは、データベースの変更を監視するクエリです。
ライブクエリは、変更が発生するたびに結果セットを更新します。これは、リアクティブにデータを最新の状態に保つ必要のある、ユーザーインターフェイス(特にテーブル/リストビュー)を構築するための優れた方法です。
ライブクエリ駆動のUIはユーザーが手動で更新しなくても自動的に更新され、データ表示に反映されます。
実装解説
ライブクエリの開始
Query query = QueryBuilder ①
.select(SelectResult.all())
.from(DataSource.database(database));
// Adds a query change listener.
// Changes will be posted on the main queue.
ListenerToken token = query.addChangeListener(change -> { ②
for (Result result : change.getResults()) {
Log.d(TAG, "results: " + result.getKeys());
/* Update UI */
}
});
// Start live query.
query.execute(); ③
- ①
QueryBuilder
を使用してクエリステートメントを作成します - ② リスナーをアタッチしてライブクエリをアクティブにします。後でライブクエリを停止するためにトークンを保存します
- ③ クエリを開始します。これにより、ライブクエリがすぐに実行され、結果がチェンジリスナーに送信されます。変更が検出されると、クエリが自動的に実行され、新しいクエリ結果が任意のオブザーバー(チェンジリスナー)に送信されます。
ライブクエリの停止
query.removeChangeListener(token);
トークンを使用してリスナーを削除します。これにより、ライブクエリが停止します。
参考情報