适用于Android Infinite循环的Google日历的google-api-java-client

时间:2011-06-19 15:26:29

标签: android google-calendar-api google-api-java-client

我一直在努力使用Google提供的示例Android应用程序,以便在Google代码中集成here部分Google日历功能。

我修改原始代码只是一点点。具体来说,在第326行的CalendarAndroidSample.java课程中,我修改过:

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永远不会变为null,从而创建循环。但是,为什么只有在我添加日历事件时才会发生这种情况?

编辑:

我删除了一些日历活动并开始工作。似乎日历有超过25个事件,它开始循环?这是什么意思?!

1 个答案:

答案 0 :(得分:0)

在我意识到自己纯粹的愚蠢之后,我打算删除这篇文章,但是我会把它留给那些像我一样堕落的人。

正在创建无限循环,因为当我的日历中有超过25个事件时,nextLink永远不会变为空。我猜测没有为maxResults设置值,默认值为25.因此,当我的日历中有超过 25个事件时,“null”nextLink永远不会存在,因为Atom返回了恰好25个事件。

如果我将maxResults设置为50并且我的日历中只存在49个事件,则第50个nextLink将为null,从而触发循环中断。

我刚刚将maxResults设置为一个巨大的数字,如1,000,000。我想如果一个人每天在他们的日历中有10个事件并且活到80岁,那只相当于大约291,000个事件。我认为1,000,000是一个安全号码。