在 Android 的 Google App-Engine 中使用 RPC 代理类多次写入(实体)

Posted

技术标签:

【中文标题】在 Android 的 Google App-Engine 中使用 RPC 代理类多次写入(实体)【英文标题】:Write multiple times(Enities) using RPC proxyclass in Google App-Engine from Android 【发布时间】: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 的正确方法是什么,以真正快速上传多个实体?

谢谢。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于在 Android 的 Google App-Engine 中使用 RPC 代理类多次写入(实体)的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何在 Google+ 上发布游戏成就

com.google.android.maps 在 Android Studio 中不存在

com.google.android.gcm.GCMBaseIntentService 在哪里?

如何在使用 Google 登录按钮时不将 Google 帐户添加到 Android 手机

在 Android 中自定义 Google SignInButton

通过 Android 应用在 Google+ 上获取个人资料信息