ContentProvider——基本概念
基本概念
ContentProvider以一个或多个表的形式将数据呈现给外部应用,这些表与在关系型数据库中找到的表类似。ContentProvider收集的某种数据类型实例,行中的每个列表示为实例所收集的每条数据。
如要访问ContentProvider中的数据,您可以以客户端的形式使用应用的 Context
中的 ContentResolver
对象,从而与ContentProvider进行通信。ContentResolver
对象会与ContentProvider对象(即实现 ContentProvider
的类实例)进行通信。ContentProvider对象从客户端接收数据请求、执行请求的操作并返回结果。此对象的某些方法可调用提供程序对象(ContentProvider
某个具体子类的实例)中的同名方法。ContentResolver
方法可提供持续存储的基本“CRUD”(创建、检索、更新和删除)功能。
从界面访问 ContentProvider
的常用模式会通过使用 CursorLoader
,在后台运行异步查询。界面中的 Activity
或 Fragment
会调用查询的 CursorLoader
,其转而使用 ContentResolver
来获取 ContentProvider
。如此一来,用户便可在查询运行时继续使用界面。
简而言之,可以把ContentProvider看成数据服务器,把ContentResolver看成发出访问请求的客户端。
ContentProvider和ContentResolver
会自动处理安全性和跨进程通信。
下图展现ContentProvider与其他组件的关系,ContentProvider像是中介,或者说是数据库的管家
下图展现ContentProvider、其他类和存储空间之间的交互