Android无限循环上google日历的google api java客户端
我一直在为谷歌提供的示例android应用程序而苦苦挣扎,该应用程序集成了谷歌代码中的一些谷歌日历功能 我只是稍微修改了一下原始代码。具体来说,在第326行的课程中,我修改了:Android无限循环上google日历的google api java客户端,android,google-calendar-api,google-api-java-client,Android,Google Calendar Api,Google Api Java Client,我一直在为谷歌提供的示例android应用程序而苦苦挣扎,该应用程序集成了谷歌代码中的一些谷歌日历功能 我只是稍微修改了一下原始代码。具体来说,在第326行的课程中,我修改了: CalendarUrl url = CalendarUrl.forAllCalendarsFeed(); 现在计算: CalendarUrl url = CalendarUrl.forEventFeed(settings.getString("accountName", "NULL"), "private", "ful
CalendarUrl url = CalendarUrl.forAllCalendarsFeed();
现在计算:
CalendarUrl url = CalendarUrl.forEventFeed(settings.getString("accountName", "NULL"), "private", "full");
这会将日历中的所有事件填充到listview中
每当我在谷歌日历中添加事件时,就会出现无限循环。一旦添加了一个新事件,示例应用程序就会冻结,查看DDMS,我可以看到logcat无休止地重复说出这一点:
06-19 11:19:28.556: DEBUG/dalvikvm(7493): GC_FOR_MALLOC freed 11761 objects / 519744 bytes in 39ms
我发现阻止应用程序循环的唯一方法是删除日历事件。一旦日历事件被删除,应用程序将恢复运行并列出我的事件,但是,listview现在包含了我的所有事件,并一次又一次地重复。这就像饲料永远不会停止
我最好的猜测是在第333行,代码如下:
String nextLink = feed.getNextLink();
if (nextLink == null) {
break;
nextLink永远不会变为null,从而创建循环。但为什么只有在添加日历事件时才会发生这种情况
编辑:
我删除了一些日历事件,它开始工作。似乎如果日历上有超过25个事件,它就会开始循环?这是什么意思 在意识到自己的愚蠢之后,我本来打算删除这篇文章的,但我将把它留给其他像我一样倒下的人 创建无限循环是因为当我的日历中有超过25个事件时,nextLink从未变为null。我猜如果不设置maxResults的值,默认值是25。因此,当我的日历中有超过25个事件时,“null”nextLink永远不可能存在,因为返回的Atom正好有25个事件 如果我将maxResults设置为50,并且日历中只存在49个事件,则第50个nextLink将为null,从而触发循环中断
我刚刚将maxResults设置为一个巨大的数字,比如1000000。我想,如果一个人每天在日历上有10件事,并且活到80岁,那只相当于大约291000件事。我认为1000000是一个安全的数字。我使用了url.maxResults=2000,这似乎纠正了问题……这是修复循环的正确方法吗?