Android Mms之:对话与联系人关联的总结详解

preview
需积分: 0 0 下载量 143 浏览量 更新于2020-09-05 收藏 38KB PDF 举报
在Android的多媒体消息服务(Mms)中,对话与联系人的关联是系统实现高效通信管理的关键部分。这篇总结详解将深入探讨这一主题,帮助开发者更好地理解Android如何处理对话和联系人的关系。 我们要知道在Mms系统中,每个对话(Thread)都与一个或多个联系人相关联,但这些信息并未直接存储在`threads`表中。取而代之的是,`threads`表保存了一个名为`recipient_id`的字段,这是一个标识符,而非直接的联系人信息。这是因为直接保存联系人信息会占用大量空间且不利于快速检索。为了解决这个问题,Android设计了一个名为`RecipientIdCache`的类,用于高效地管理这些关联。 `canonical_addresses`表是联系人与`recipient_id`之间建立联系的桥梁。这个表包含两列:`_id`作为唯一标识,以及电话号码。当需要查询某个`recipient_id`对应的联系人信息时,`ConversationList`首先查找`RecipientIdCache`,若找不到,再通过`recipient_id`查询`canonical_addresses`表以获取电话号码,接着利用这个号码去联系人数据库中获取更详细的联系人信息。这样的流程虽然涉及多次数据库查询,但通过`RecipientIdCache`缓存,可以显著提高查询效率。 `RecipientIdCache`是一个关键组件,它维护了一个哈希表,键为`Thread`的`RecipientId`,值为对应的电话号码。这样,在查询`Thread`时,例如`Conversation`类,就可以直接通过`RecipientIdCache`获取联系人信息,而无需每次都访问数据库。`RecipientIdCache`会在每次发送消息时更新其缓存,确保信息的实时性。 当`Thread`表发生变化,如删除一个`Thread`,系统会相应地更新`RecipientIdCache`,以保持数据的一致性。这种机制使得即使在频繁的操作中,也能保证联系人信息的准确性和查询速度。 Android Mms中对话与联系人的关联处理涉及到多层数据结构和缓存机制,旨在优化查询性能并提供无缝的用户体验。理解和掌握这些细节对于Android开发者来说至关重要,特别是在开发涉及通信功能的应用时,能够有效提高应用的性能和响应速度。