Kum*_*mar 7 android azure azure-storage azure-mobile-services
1.我的应用程序是每2分钟数据插入本地数据库(使用Azure脱机同步),然后每5分钟数据与后台服务同步到Azure数据库.
2.在AZURE服务器中插入后的每行数据,我想从本地数据库中删除.
我的问题:
1.我怎么知道我的每一行都是在服务器中插入的.任何响应都将从服务器发送回客户端.还有其他解决方案吗?.
2.从本地Sqlite中删除在Azure服务器中插入的行(在从Azure服务器插入后获得构造之后).
另外,我想使用Azure方法检索本地数据库中保存的数据.
我正在使用Azure Cloud for Server End.
对于 1,您可以实现处理程序以在将数据返回给客户端之前拦截服务器响应(请参阅: https: //github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/ src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/synchandler/SimpleSyncHandler.java)
public class MySyncHandler implements MobileServiceSyncHandler {
@Override
public JsonObject executeTableOperation(RemoteTableOperationProcessor processor, TableOperation operation) throws MobileServiceSyncHandlerException {
try {
return operation.accept(processor);
} catch (Throwable e) {
throw new MobileServiceSyncHandlerException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
如果操作没有抛出异常,则意味着 HTTP 请求成功,因此您可以继续删除该项目。
要删除行,您不想使用同步表,因为它会跟踪操作。您可以使用直接 SQL 连接来执行此操作。另一种选择是更新上述函数以引发自定义错误而不是返回。这将使错误上升到处理程序中的下一个方法(onPushComplete)。
借助 TableOperationError 类,可以使用同步上下文上的内置方法轻松取消操作并丢弃本地项目。
因此,循环遍历 getOperationErrors() 方法,对于每个自定义错误,只需调用 cancelAndDiscardItem 方法(https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src /sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/MobileServiceSyncContext.java#L283)
最后,通过 SyncTable 类从本地存储中检索数据。读取和查询方式与网上版本大体相同。以下是来自 Android QS 的示例:
Query query = QueryOperations.field("complete").eq(val(false));
return mToDoTable.read(query).get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |