android - MobileServicePushFailedException Azure Android

标签 android azure android-asynctask synchronization azure-mobile-services

我正在为我的 Android 应用程序实现移动服务以连接到 azure。我已经完成了离线同步教程,效果很好。

我现在尝试在我的应用程序中使用不同的表实现相同的方法,但出现推送异常。有趣的是,它仍然被插入到在线数据库中。有人知道为什么会发生这种情况吗?

作为测试,我在 ToDoItem 项目中实现了相同的类、表等,没有出现错误。

下面的异常

W/System.err: java.util.concurrent.ExecutionException: com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException
W/System.err:     at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
W/System.err:     at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
W/System.err:     at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
W/System.err:     at com.heathrow.ecms.DatabaseAccess$3.doInBackground(DatabaseAccess.java:2178)
W/System.err:     at com.heathrow.ecms.DatabaseAccess$3.doInBackground(DatabaseAccess.java:2173)
W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:292)
W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err:     at java.lang.Thread.run(Thread.java:818)
W/System.err: Caused by: com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException
W/System.err:     at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.pushOperations(MobileServiceSyncContext.java:959)
W/System.err:     at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.consumePushSR(MobileServiceSyncContext.java:859)
W/System.err:     at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.access$1100(MobileServiceSyncContext.java:83)
W/System.err:     at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext$PushSyncRequestConsumer.run(MobileServiceSyncContext.java:1120)

同步代码与教程中的完全相同,但使用不同的表,错误出现在推送线上。

private AsyncTask<Void, Void, Void> sync() {
    AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){
        @Override
        protected Void doInBackground(Void... params) {
            try {
                MobileServiceSyncContext syncContext = mClient.getSyncContext();
                syncContext.push().get();
                mtblAttachment.pull(null).get();
            } catch (final Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    };
    return runAsyncTask(task);
}

最佳答案

好吧,在我昨天发表最后一条评论之后,我已经解决了这个问题。

类中的 SerializedName 字段必须与您在 initLocalDatabase 中放入的内容匹配(区分大小写)。尽管此错误没有出现在我对 ToDoItem 应用程序的测试运行中,但当我在实际应用程序中实现它时,它却出现了。

因此,如果您收到 MobileServicePushFailedException,请检查您的 SerializedName 字段是否与本地数据库字段名称匹配。由于某种原因,它不会影响 Azure 数据库字段,这就是为什么我看到我的数据转到 Azure 而不是我的本地数据库。最佳实践使所有字段完全相同(认为我当时很懒!)。

关于android - MobileServicePushFailedException Azure Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43809800/

相关文章:

android - 如何将 OnClickListener 添加到 CardView?

android - 如何检测Android手机是否完全支持通话录音功能?

c# - 无法将动态表实体转换为自定义实体 Azure 表存储

c# - 使用代理服务器上传 Azure 存储客户端库

android - 如何制作通用的 AsyncTask?

java - 使用 asyncTask 为 ListView 加载位图时出现 RejectedExecutionException

AndroidRuntime : java. lang.UnsatisfiedLinkError: dlopen failed: library "libandroidicu.so"not found

java - 从 JSON 解析日期时间字符串

azure - 使用模板时发布的额外工件

android - 将参数传递给 AsyncTask 构造函数有哪些优点/缺点?