我正在使用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。”这似乎就像数据库事务操作一样。 –