2015-12-21 61 views
1

當我在Couchbase精簡版Android中從UI線程中運行的複製,它發生的複製在另一個線程和通知(通過addChangeListener()方法的方法),執行第三線程被接收。我對拉複製代碼如下:多線程:複製在Couchbase精簡版在Android中

Replication pullRep = getDatabase().createPullReplication(syncUrl); 
pullRep.setContinuous(true); 
pullRep.addChangeListener(this); 
pullRep.start(); 

我的問題是:如何運行的同步複製,或至少得到其複製就開始在同一主題的通知?

我的看法是,複製必須發生在當前線程。開發人員必須處理線程問題。

I'm很新與Couchbase精簡版,也許I'm錯誤。

回答

0

如果我誤解了你的情況,我很抱歉,但我相信你想說的是你不能用Couchbase偵聽器中發現的變化更新UI,因爲偵聽器在後臺線程上運行,而不是UI線程。我對麼?

你肯定不希望運行在UI線程可能長時間任務,因爲它會創建一個貧窮的UX。異步是要走的路。

你可以嘗試這樣的事情,而不是:

Handler threadHandler = new Handler(); 

couchbaseDatabase.addChangeListener(new Database.ChangeListener() { 
    public void changed(Database.ChangeEvent event) { 
     // Alter variables related to the UI (maybe an array for a list view) 
     threadHandler.post(updateUI); 
    } 
}); 

final Runnable updateUI = new Runnable() { 
    public void run() { 
     // Refresh the UI 
     adapter.notifyDataSetChanged(); 
    } 
}; 

當然是我貼的只是點點滴滴,而不是一個真正的工作示例。我的觀點是我使用了Handler。還有很多其他方法也可以起作用。

請問

這對你的工作?

最佳,

+0

我可以調用couchdatabase.createPullReplication(syncUrl);用於製作Intent服務,響應式用戶界面。 –

相關問題