我正在使用App Engine Connected Android插件支持并自定义Google I / O中显示的示例项目。顺利完成它。我使用代码从Android设备写了一些任务到云成功。
CloudTasksRequestFactory factory = (CloudTasksRequestFactory) Util
.getRequestFactory(CloudTasksActivity.this,
CloudTasksRequestFactory.class);
TaskRequest request = factory.taskRequest();
TaskProxy task = request.create(TaskProxy.class);
task.setName(taskName);
task.setNote(taskDetails);
task.setDueDate(dueDate);
request.updateTask(task).fire();
这很有效,我已经测试过了。
我现在要做的是我有一个数组String[][] addArrayServer
,并希望将所有元素写入服务器。我正在使用的方法是:
NoteSyncDemoRequestFactory factory = Util.getRequestFactory(activity,NoteSyncDemoRequestFactory.class);
NoteSyncDemoRequest request = factory.taskRequest();
TaskProxy task;
for(int ik=0;ik<addArrayServer.length;ik++) {
task = request.create(TaskProxy.class);
Log.d(TAG,"inside uploading task:"+ik+":"+addArrayServer[ik][1]);
task.setTitle(addArrayServer[ik][1]);
task.setNote(addArrayServer[ik][2]);
task.setCreatedDate(addArrayServer[ik][3]);
// made one task
request.updateTask(task).fire();
}
确保上传一个任务,即数组的第一个元素。但是在创建一个新的任务实例时会挂起。我是Google-Appengine的新手。什么是正确的方式来调用RPC,真的快速上传多个实体?
感谢。
答案 0 :(得分:0)
这个问题的答案是,request.fire()只能为一个请求对象调用一次,但我每次都在循环中调用它。所以它只会更新一次。简单的解决方案是在循环外调用fire()。
NoteSyncDemoRequestFactory factory = Util.getRequestFactory(activity,NoteSyncDemoRequestFactory.class); NoteSyncDemoRequest request = factory.taskRequest();
TaskProxy task;
for(int ik=0;ik<addArrayServer.length;ik++) {
task = request.create(TaskProxy.class);
Log.d(TAG,"inside uploading task:"+ik+":"+addArrayServer[ik][1]);
task.setTitle(addArrayServer[ik][1]);
task.setNote(addArrayServer[ik][2]);
task.setCreatedDate(addArrayServer[ik][3]);
// made one task
request.updateTask(task);
}
request.fire(); //call fire only once after all the actions are done...
有关详细信息,请查看此问题.. GWT RequestFactory and multiple requests