Android Mms之:对话与联系人关联的总结详解
需积分: 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开发者来说至关重要,特别是在开发涉及通信功能的应用时,能够有效提高应用的性能和响应速度。
weixin_38543293
- 粉丝: 7
- 资源: 963
最新资源
- 每周质量安全排查报告.docx
- 排水报装接入申请表.docx
- 评估报告公示公众意见表.doc
- 评审、登记备案情况表.docx
- 墙板隐蔽前监理检查记录.docx
- 抢救室、输液室周带教计划表.docx
- 人防工程主体结构验收前监理人员检查记录表.docx
- 人防工程竣工验收前监理人员检查记录.docx
- 人防门框及临战封堵框常规数据检查表.docx
- 人防门扇常规数据检查表.docx
- 社区工作者岗位表.docx
- 涉及消防的建筑材料、构配件和设备的进场试验报告汇总表.docx
- 涉及消防的各分部分项工程消防查验结果表.docx
- 十级伤残鉴定标准表.docx
- 市标化优良工地检查自评表(施工、监理企业用表).docx
- 输液结束(拔针)流程表.docx