Пишите несколько раз (Enities), используя RPC-прокси-класс в Google App-Engine от Android - PullRequest
0 голосов
/ 18 марта 2012

Я использую поддержку подключаемого модуля Android Engine и настроил образец проекта, показанный в 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 Ответ

0 голосов
/ 21 марта 2012

Хороший ответ на этот квест состоит в том, что request.fire () может быть вызван только один раз для объекта запроса, но я вызывал его каждый раз в цикле. Так что это будет обновляться только один раз. Простое решение - вызвать fire () вне цикла.

NoteSyncDemoRequestFactory factory = Util.getRequestFactory (активность, 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 и несколько запросов

...