文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

38vr3w

http://fabua.ksxb.net/com38vr3w/

相关列表
文章列表
  • 暂无文章
推荐文章
联系方式
  • 联系人:王女士
  • 电话:13817993767
ContentProvider总结手机联系人「ContentProvider总结」
发布时间:2025-01-12        浏览次数:0        返回列表

ContentProvider

ContentProvider作为四大组件之一,作用是IPC(跨进程通信),底层实现是Binder。

自定义ContentProvider必须要实现6个方法:

ContentResolver

Content providers是以类似数据库中表的方式将数据暴露出去,那么ContentResolver也将采用类似数据库的操作来从Content providers中获取数据。

这里常使用到query操作:

uri :查询地址 (Uri)
projection :查询的数据字段名称 (String[] )
selection :查询的条件 (String)
selectionArgs :查询条件的参数 (String[])
sortOrder :排序 (String)

ContentProvider、ContentResolver、ContentObserver 之间的关系

ContentProvider——内容提供者, 在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider 对你应用中的数据进行添删改查。
ContentResolver——内容解析者, 其作用是按照一定规则访问内容提供者的数据(其实就是调用内容提供者自定义的接口来操作它的数据)。
ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。

使用案例:获取手机联系人和短信

1.首先需要添加权限


2.需要询问权限并同意


查询联系人和短信的管理类:


contentProvider的初始化流程

Application的创建和执行onCreate,来看看这段代码


可以看到,执行初始化ContentProvider的时机在makeApplication和callApplicationOnCreate直接,那最起码可以得出一个结论:ContentProvider初始化的时机在Application的onCreate之前。

想要弄明白ContentProvider初始化做了什么,那就需要去installContentProviders方法看一看了。


installContentProviders完成了通过installProvider方法完成ContentProvider的启动,并且将启动了的ContentProvider放在了数组中,传递给了AMS,AMS内部会将他们存起来,这样外部调用者就可以直接从AMS中获取ContentProvider了。