google-api-java-клиент для Календаря Google на Android Бесконечный цикл - PullRequest
0 голосов
/ 19 июня 2011

Я боролся с примером приложения Android, предоставленного Google, для интеграции некоторых функций календаря Google, найденных здесь в коде Google.

Я немного изменил исходный код. В частности, в классе CalendarAndroidSample.java в строке 326 я изменил:

CalendarUrl url = CalendarUrl.forAllCalendarsFeed();

для вычисления:

CalendarUrl url = CalendarUrl.forEventFeed(settings.getString("accountName", "NULL"), "private", "full");

Это прекрасно заполняет просмотр списка всеми событиями в моем календаре.

Бесконечный цикл происходит всякий раз, когда я добавляю событие в свой календарь Google. Как только новое событие добавлено, пример приложения зависает, и, глядя на DDMS, я вижу, как logcat неоднократно выплевывает это без конца:

06-19 11:19:28.556: DEBUG/dalvikvm(7493): GC_FOR_MALLOC freed 11761 objects / 519744 bytes in 39ms

Единственный способ остановить зацикливание приложения - удалить событие календаря. После того, как событие календаря удалено, приложение возвращается к жизни и перечисляет мои события, НО, теперь список содержит все мои события, повторяемые снова и снова. Как будто подача никогда не прекращается.

Мое лучшее предположение заключается в том, что в строке 333, где код гласит:

String nextLink = feed.getNextLink();
    if (nextLink == null) {
      break;

nextLink никогда не становится нулевым, создавая цикл. Но почему это происходит ТОЛЬКО при добавлении события календаря?

EDIT:

Я удалил несколько событий календаря, и он начал работать. Кажется, будто в календаре более 25 событий, он начинает цикл? Что это значит?!

1 Ответ

0 голосов
/ 20 июня 2011

Я собирался удалить этот пост после того, как осознал свою явную глупость, но я собираюсь оставить его для тех, кто сильно упал, как я.

Создан бесконечный цикл, потому что nextLink никогда не становился нулевымкогда у меня было более 25 событий в моем календаре.Я предполагаю, что без установки значения для maxResults значение по умолчанию равно 25. Следовательно, когда в моем календаре было больше, чем 25 событий, «нулевой» nextLink никогда не мог существовать, потому что возвращенный атом имеет точно25 событий.

Если я установлю maxResults на 50, а в моем календаре будет только 49 событий, то 50-й nextLink будет нулевым, что вызовет разрыв цикла.

Я только что установил maxResults наогромное количество, как 1 000 000.Я полагаю, что если у человека есть 10 событий в календаре каждый день и он доживет до 80 лет, это будет равняться только 291 000 событий.Я считаю, что 1 000 000 - это безопасное число.

...