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

所属分类: 软件编程 / Android 阅读数: 869
收藏 0 赞 0 分享

在Mms中每个Thread都有其相应的联系人,但是threads表中并没有直接保存联系人的信息(号码或名字),而是保存一个叫做recipient_id的东西,也还有一个类叫做data/RecipientIdCache.java专门管理它。

在数据库中专门有一个表来保存它canonical_addresses。它的目的就是为了能够快速的找到某一对话的联系人的信息。对话的表threads里面并没有保存其联系人的直接信息,而是有一列叫做recipient_ids的整数来代表收信人。而在数据库还有另外一个表叫做canonical_addresses,其用来匹配threads中的recipient_ids和号码,其只有二列,一个是_id,另一个就是它的号码。因为对话中并没有直接保存联系人的信息,所以当ConversationList想要显示一个Thread时,就要先查到它的RecipientId,然后再根据这个RecipientId到canonical_addresses中查找到号码,再用这个号码去联系人数据库查询到联系人的其他信息。这一整个过程比较烦琐,需要要查询三次数据库才能得到联系人的信息,就无法快速的显示出来。所以就有了RecipientIdCache这个类,这个类内部有一个Hash表,键是ThreadRecipientId,值是联系人的号码。其他的类,比如Conversation在查询Thread的时候不会直接去查询canonical_addresses表来得到对应RecipientId的联系人的号码,而是直接通过RecipientIdCache来获取。RecipientIdCache先从自己的Cache中来查到号码,如果查找 不到再去查询数据库,并加到Cache中。每次发送信息时都会进行一次更新Cache的动作。因为RecipientIdThread中的一个属性,所以当Thread表发生变化时,比如删除一个Thread时也都会进行更新RecipientIdCache

更多精彩内容其他人还在看

Android 动画之AlphaAnimation应用详解

本节讲解AlphaAnimation 动画,窗口的动画效果,淡入淡出什么的,有些游戏的欢迎动画,logo的淡入淡出效果就使用AlphaAnimation,具体的祥看本文,需要的朋友可以参考下
收藏 0 赞 0 分享

Android 动画之TranslateAnimation应用详解

本节讲解TranslateAnimation动画,TranslateAnimation比较常用,比如QQ,网易新闻菜单条的动画,就可以用TranslateAnimation实现,本文将详细介绍通过TranslateAnimation 来定义动画,需要的朋友可以参考下
收藏 0 赞 0 分享

Android 动画之ScaleAnimation应用详解

本节讲解ScaleAnimation 动画在应用中的实现,有需要的朋友可以参考下
收藏 0 赞 0 分享

Android 动画之RotateAnimation应用详解

本节讲解旋转动画效果RotateAnimation方法的应用,有需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之文件操作模式深入理解

本文将介绍Android开发之文件操作模式,需要了解的朋友可以参考下
收藏 0 赞 0 分享

Android应用程序窗口(Activity)窗口对象(Window)创建指南

本文将详细介绍Android应用程序窗口(Activity)的窗口对象(Window)的创建过程,需要了解的朋友可以参考下
收藏 0 赞 0 分享

android activity设置无标题实现全屏

本文将详细介绍Android如何设置Activity全屏和无标题的实现方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android启动模拟器报错解决方法

本文将详细介绍Android模拟器报"Failed To Allocate memory 8"错误的解决办法,需要了解的朋友可以参考下
收藏 0 赞 0 分享

Android如何实现非本地图片的点击态

Android如何实现非本地图片的点击态,本文提供了详细的实现代码,需要了解的朋友可以参考下
收藏 0 赞 0 分享

android viewpaper实例探讨

本文将提供一个android viewpaper实例实现过程,需要了解更多的朋友可以参考下
收藏 0 赞 0 分享
查看更多