2

オンラインと同じようにオフラインで機能するように、CouchDBをAndroidと同期させようとしています.continues(true/false)がこれを実現する方法であることを理解しています。しかし、実際に実行時に何らかの方法で変更する方法はありますか? CONNECTIVITY_SERVICE がある場合は BroadcastReciever をリッスンし、それに応じて .continues() の値を設定することを考えていますが、それを機能させることはできません...何か提案はありますか?

protected void startEktorp() {
    httpClient = new TouchDBHttpClient(server);
    dbInstance = new StdCouchDbInstance(httpClient);

    HamsterSyncEktorpAsyncTask startupTask = new HamsterSyncEktorpAsyncTask() {

        @Override
        protected void doInBackground() {
            // create a local database
            dbConnector = dbInstance.createConnector(DATABASE_NAME, true);
        }

        @Override
        protected void onSuccess() {
            // Create the query and get the results
            queryDB();
            // Start doing the replications!
            startReplications();
        }
    };
    startupTask.execute();
}

public synchronized void queryDB() {
    ViewQuery viewQuery = new ViewQuery()
            .designDocId("_design/" + dDocName).viewName(viewName)
            .reduce(false).includeDocs(true);
    ViewResult viewResult = dbConnector.queryView(viewQuery);
    Log.v("SUCCESS", viewResult.getRows().toString());

    notifyHandlers(viewResult);
}

/**
 * Replicates the database from server to the phone and vice versa.
 */
public void startReplications() {
    // pull this database to the test replication server
    pullCommand = new ReplicationCommand.Builder().source(DATABASE_PATH)
            .target(DATABASE_NAME).continuous(true).build();

    pushCommand = new ReplicationCommand.Builder().source(DATABASE_NAME)
            .target(DATABASE_PATH).continuous(true).build();

    HamsterSyncEktorpAsyncTask pushReplicaton = new HamsterSyncEktorpAsyncTask() {

        @Override
        protected void doInBackground() {
            dbInstance.replicate(pullCommand);
            ReplicationStatus status = dbInstance.replicate(pushCommand);
            Log.e(TAG, status.getSessionId().toString());
        }
    };
    pushReplicaton.execute();
}

また、レプリケーションが実際に何か新しいものを送信/取得したかどうかを知り、データベース内のすべてのドキュメントを表示するアプリのリストビューを更新する方法があるかどうかも疑問に思っています (queryDB() 関数)?

4

0 に答える 0