日历提供程序如何存储无限重复事件的实例?

Azz*_*afi 8 database android relational-database android-calendar

日历提供程序中,有多个数据表,其中一个是“事件”表,用于存储各个事件的详细信息,另一个是“实例”表,用于存储每个事件发生的开始和结束时间。

我的问题是:

实例表中的事件到底是如何存储的,例如,如果事件每天都在重复,那么表如何存储事件的每次发生?它需要表中的行数无限,而且这不会需要太多的存储空间吗?一年中每天重复的事件在表中将有 365 个条目,因此存储事件的每次发生不是浪费吗?

小智 5

当您创建没有结束日期的重复事件时,提供商会将其扩展以填充您的日历至少一年。如果您向下滚动日历超过一年,它会将事件扩展到上次查看的日期。

是的,从理论上讲它的效率相当低,但在实践中却并没有那么糟糕。在我的测试中,安排了大约 5 年的每日活动大约需要 150KB 的数据库大小(1858 行)。每周事件 - 30 KB(266 行)。

对于具有索引的规范化数据库来说,即使在低端设备上,这也不是问题。