根据本教程,我已经为移动后端启动应用程序编写了一个 Android 客户端。一切都符合实施部分Continuous Queries
。
我编写了一个查询,并从代码 ( onPostCreate()
) 中的正确位置调用它,但是查询从不返回任何数据。
我不认为这是一个身份验证问题,因为我能够成功拨打其他电话。
这是从不返回结果的代码:
CloudCallbackHandler<List<CloudEntity>> handler = new CloudCallbackHandler<List<CloudEntity>>() {
@Override
public void onComplete(List<CloudEntity> results) {
for (CloudEntity entity : results) {
UserLocation loc = new UserLocation(entity);
mUserLocations.remove(loc);
mUserLocations.add(loc);
drawMarkers();
}
}
@Override
public void onError(IOException e) {
Toast.makeText(getApplicationContext(), e.getMessage(),
Toast.LENGTH_LONG).show();
}
};
CloudQuery query = new CloudQuery("UserLocation");
query.setLimit(50);
query.setSort(CloudEntity.PROP_UPDATED_AT, Order.DESC);
query.setScope(Scope.FUTURE_AND_PAST);
getCloudBackend().list(query, handler);
使用调试器,我已经验证了该getCloudBackend().list()
行已执行,但该onComplete()
方法从未被命中,并且onError()
.
这是一个完美运行的调用示例:
UserLocation self = new UserLocation(super.getAccountName(),
gh.encode(mCurrentLocation));
getCloudBackend().update(self.asEntity(), updateHandler);
从本质上讲,getCloudBackend().update()
有效,而getCloudBackend().list()
无效。
我还应该补充一点,我已经从教程中链接的 github repo 下载了完整的源代码,并且该代码存在同样的问题。我也尝试过多次重新部署后端服务器。