【问题标题】:Write multiple times(Enities) using RPC proxyclass in Google App-Engine from Android在 Android 的 Google App-Engine 中使用 RPC 代理类多次写入(实体)
【发布时间】:2012-03-18 06:50:46
【问题描述】:

我正在使用 App Engine Connected Android Plugin 支持并自定义 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 的正确方法是什么,以真正快速上传多个实体?

谢谢。

【问题讨论】:

    标签: google-app-engine cloud rpc gwt-rpc


    【解决方案1】:

    这个问题的答案是 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多