我已成功实现(使用java客户端库)身份验证和日历检索。我的问题是,我想从多个日历中检索事件列表,但是为每个日历发送单独的API请求所花费的时间开始累加,如果我启用了大量日历,则会导致20秒的页面加载时间。我知道API没有提供从多个日历请求事件的方法,但是我可以使用BatchRequest类来分组我的请求吗?
我已经能够通过这个例子来批量插入多个日历。
但我无法将此扩展到列出事件。基本上,我想这样做:
for (int i=0; i < calendarIDs.length; i++) {
client.events().list(calendarIDs[i]).queue(batch, callback);
}
batch.execute();
答案 0 :(得分:1)
我终于用一种稍微不同的方法弄明白了。而不是使用队列函数为列表对象,使用客户端的batch.queue函数:
BatchRequest batch = client.batch();
for (int i=0; i< calendarIDs.length; i++) {
List req = client.events().list( calendarIDs[i]);
batch.queue(req.buildHttpRequest(), Calendar.class, GoogleJsonErrorContainer.class, mycallback);
}
batch.execute();
这似乎改善了很多性能。
答案 1 :(得分:0)
我做的事情看起来像你想要的,但我没有使用批处理,这里是我的代码示例:
CalendarEventFeed resultFeed = service.getFeed(calendarUrl, CalendarEventFeed.class);
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEventEntry entry = resultFeed.getEntries().get(i);
}
因此,您需要更改以从不同日历获取活动的唯一事项是&#34; calendarUrl&#34;,这是您如何获取日历网址
calendarUrl = new URL(calendar.getLink(Link.Rel.ALTERNATE, Link.Type.ATOM).getHref());
其中&#34;日历&#34;是google lib的CalendarEntry。