ContentProvider与ContentResolver——基本概念

 可参考的站点:

  • Android官网对ContentProvider的介绍(比较全面,不会过时)
  • 菜鸟教程对ContentProvider的介绍(比较通俗易懂)

基本概念

ContentProvider以一个或多个表的形式将数据呈现给外部应用,这些表与在关系型数据库中找到的表类似。ContentProvider收集的某种数据类型实例,行中的每个列表示为实例所收集的每条数据。

如要访问ContentProvider中的数据,您可以以客户端的形式使用应用的 Context 中的 ContentResolver 对象,从而与ContentProvider进行通信。ContentResolver 对象会与ContentProvider对象(即实现 ContentProvider 的类实例)进行通信。ContentProvider对象从客户端接收数据请求、执行请求的操作并返回结果。此对象的某些方法可调用提供程序对象(ContentProvider 某个具体子类的实例)中的同名方法。ContentResolver 方法可提供持续存储的基本“CRUD”(创建、检索、更新和删除)功能。

从界面访问 ContentProvider 的常用模式会通过使用 CursorLoader,在后台运行异步查询。界面中的 ActivityFragment 会调用查询的 CursorLoader,其转而使用 ContentResolver 来获取 ContentProvider。如此一来,用户便可在查询运行时继续使用界面。

简而言之,可以把ContentProvider看成数据服务器,把ContentResolver看成发出访问请求的客户端。ContentProvider和ContentResolver会自动处理安全性和跨进程通信。

下图展现ContentProvider与其他组件的关系,ContentProvider像是应用私有数据的管家、当权者、当局(authorities)

ContentProvider与ContentResolver——基本概念_第1张图片

下图展现ContentProvider、其他类和存储空间之间的交互

ContentProvider与ContentResolver——基本概念_第2张图片

 

你可能感兴趣的:(Android)