我正在使用azure-android使用離線同步設施。我必須同步多個表。目前我正在做下面的這個。對於每個表我調用pull方法,目前我所看到的是每一個都被逐一拉動。我想以異步的方式做到這一點,我也需要等待所有表同步。如何在Azure脫機同步中同步多個表在異步Android
public void syncAsync(){
if (isNetworkAvailable()) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
mItemsTable.pull(mPullQuery_Items).get();
mCustomerTable.pull(mPullQuery_Customer).get();
mSalesTable.pull(mPullQuery_Sales).get();
//Few more tables to pull.
} catch (Exception exception) {
exception.printStackTrace();
}
finally {
}
return null;
}
}.execute();
} else {
//error
}
}
我看到微軟使用ListneableFuture並試圖從
我的鏈接看到該代碼示例閱讀一些信息
名單>查詢; // 查詢發送到所有不同的數據中心,但我們希望等到它們全部完成或失敗。
ListenableFuture<List<QueryResult>> successfulQueries = Futures.successfulAsList(queries);
Futures.addCallback(successfulQueries, callbackOnSuccessfulQueries);
我試圖改變像上面我的代碼,但我無法理解如何做到這一點。我想等到他們都完成了(所有桌子都拉出來了),並且需要成功或失敗的列表。由於我在Java開始時覺得很難理解如何修改。
現在我解決了像這樣的異步同步問題,只需調用pull方法而不用獲取並保存由pull返回的listenableFuture對象。一旦所有的表都被調用。調用每個可監聽的對象。此時它會阻止直到完成拉動。 – Nasir
我仍然不確定是否成功使用AsList。任何人都可以幫助我嗎? – Nasir
'successfulAsList'的描述表示「返回一個ListenableFuture,它的值是一個包含每個成功輸入期貨價值的列表,按照順序排列。對應於失敗或取消期貨的值被替換爲null。」這似乎就像數據庫事務操作一樣。 –