Contact联系人对Mms来说是十分重要的,因为每一个对话的收信人都是一个联系人,新建信息时可以输入联系人的任何信息,比如号码或名字,Mms都可以把信息发给相应的人。Mms中的类Contact就是用来代表一个联系人,它含有联系人的信息,如名字,号码,联系人Id,是否存在于联系人数据库等等,同时Contact也提供了一些方法来获取Contact对象,Contact.get()方法来获取Contact对象。Contact会保持数据与联系人数据库的同步,有一个接口updateContact()用于通知联系人信息已经发生了改变。
Contact内部也有一个Cache,用于保存最近用到的联系人。因为外部在用Contact.get()方法来获取Contact时通常都只传给一个号码,并期望获取Contact。
Contact内部的Cache是由ContactCache类来创建和管理的。它内部还有一个TaskStack用于管理一些Runnable。因为每个从数据库中加载Contact都是一个单独的线程,这个TaskStack就是专门用于管理Runnable和,以Stack的方式来管理,也即FILO顺序的方式来运行Runnable任务。
ContactCache中有很多重载的get()方法用于获取Contact对象,其中都有一个布尔参数canBlock,这个是说是以阻塞调用者的方式来加载Contact还是以异步的方式来加载,另外一个参数就是联系人的号码。get()方法会先调用internalGet()方法,internalGet()会先试图从内部的CachemContactHash中获取Contact,如果不存在就用传入的号码新建一个Contact,总之它一定会返回一个联系人的。之后会进行updateContact()的动作,updateContact()就是放在一个Runnable线程中,如果调用者是可阻塞的,马上就运行这个Runnable来updateContact,如果是异步方式就把这个Runnable放到TaskStack中稍后运行。UpdateContact会调用getContactInfo来获取联系人的信息,getContactInfo会调用getContactInfoForSelf(),getContactInfoForPhoneNumber,getContactInfoForEmailAddress()来获取具体的联系人信息。其中如果这个号码是手机联系人自己本身,就获取本机的相关信息;如果号码是一个Email地址或者一个短号码,或者字符号码,那么就把号码作为一个Email地址来查询,也就是说把它作为联系人的Email字段匹配来查询;其他情况,也就是号码就是一个电话号码,把它与联系人的电话号码字段匹配查询。updateContact在查询完成后,会调用接口UpdateListener.onUpdate(),以告诉监听者,联系人已更新。因为联系人的获取过程中都是异步的,所以才会在更新完成后调用接口来通知。
内部的Cache的数据结构是一个HashMap<String,ArrayList<Contact>>,Key是以Contact内部的数据来生成的。InvalidateCache时并不会移除mContactsHash内部的数据,而是把其标识为Stale,当下次Get这个Contact时就会调用updateContact()来更新这个Contact。
相关推荐:
OpenArtAI如何进入:数字艺术的未来之门,分析海报ai
WPQQ-开启数字时代的智能连接新纪元,杭州网站推广厂家电话
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
《权重参谋:让您的网站轻松登顶搜索引擎的秘密武器》,设计微信社群私域营销推广简案
SEO要点:提升网站排名的核心技巧与策略,福田市网站建设推广费用
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
seo资源指的是什么,seo资料 ,绿眼AI
什么是seo优化营销,seo主要优化什么 ,ai绘画国风古韵
ChatGPT:引领智能对话新潮流,助力未来科技,ai写作免费议论文
什么是SEO金融,seo是做什么的 ,ai中转程序
《*采集站:带你领略全球最全*资源的宝藏平台》,seo优化易下拉瞧瞧
seo需要什么能力,seo需要哪些技术 ,ai长条弯曲
SEO目的:如何通过精准优化提高网站流量与转化率,百度推广网站关键词
seo简介主要写什么,seo主要内容 ,AI弧线这
AI人物生成:重新定义虚拟形象创作的未来
SEO大量优化:如何通过精准策略提升网站流量,突破搜索引擎排名瓶颈,吕梁本地网站推广平台
SEO符合:提升网站排名的秘诀,助力企业赢在搜索引擎优化的赛道,优化没续费 网站没了
seo需要会什么技术呢,seo需要会什么技术呢知乎 ,红色框ai
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
如何利用AI生成高质量文章,提升写作效率与创意?
seo网络上什么意思,seo表示什么 ,如何避免今日头条ai写作检测
ChatGPT破解版电脑:如何获得更强大的AI助手,提升工作与学习效率,ai预设动画
好用的人工智能AI软件推荐,让你的生活更智能!
“多网建站”助力企业跨越发展,开启全新数字化时代,海南网站优化电池
优化投入,让企业更具竞争力,怎样推广营销方案
ChatGPT画布打不开?如何解决这一常见问题?,Ai怎么储存为Ai格式在桌面
seo监控什么意思,seo数据监控 ,ai panda眼镜架
seo追词是什么,seo词条 ,52580609AI
什么是SEO可以自学吗,seo零基础可以自学吗 ,ai1紫
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
Goanno跨级借鉴:推动创新与提升效率的秘密武器,崇明区智能ai艾灸费用
文章AI生成:让创作变得更简单、更高效!
文章AI生成软件高效创作新纪元
AI缩写文本:助力智能生活的革新力量,ai智能写作生成神器下载
SEO模板:提升网站排名,助你快速抢占搜索引擎流量高地,选择seo职业缺点
SEO怎么排名?这5大技巧,轻松提升网站排名,人人都可ai
优化分析:提升企业效益的关键策略,山东大网站建设
ChatGPT网页版内容显示不全的解决方案:如何轻松解决问题?,课件ai
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
SEO站内优化:提升网站排名的核心策略,厦门市网站优化企业
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
ChatGPT页面打不开怎么办?这些解决方法让你轻松访问AI助手!,分散ai
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
SEO优化如何为网站做好关键词研究和优化,ai直通
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
SEO这样做,轻松引爆流量,助力企业成长,无极标准网站优化好处