以下内容来自对官网文档的阅读理解
providers and provider clients
首先,content provider 对外提供的数据就像关系数据库的表数据一样。一行就代表某个数据类型的实例,一列就代表着实例对象的某个属性。这就暗示了,content provider 对数据的管理就类似于关系数据库一样,有着基本的 ”增删改查“操作。
如果想通过 content provider 获取数据,就要使用 ContentResolver类,这个就作为 provider client。通过 ContentResolver 可与 provider 进行增删改查的交互,例如在 Activity 中可以通过方法 getContentResolver() 获取到。
Activity/Fragment 中具体的调用流程可见 图1,通过 CursorLoader 可异步进行数据操作,而不影响主线程工作。
图 1.png
Content URI 即数据
content URI 是指一个路径字符串,其代表的含义就是 content provider 提供的一个数据。它有两部分组成,authority 和 path,前者表示 provider 完整的名称,后者表示数据点所在位置。
作为数据提供方
如果想自定义 content provider 来为其他模块或应用提供数据,首先要考虑这是否确实需要:
- 想要为其他应用提供数据
- 允许用户复制应用数据给其他应用
- 通过系统的搜索功能想提供一些搜索建议
- 想给系统组件提供应用数据
如果满足以上任意一点,那就做好设计,大胆去实现自定义 provider 吧。
至于仅是应用内部的数据存储或者数据库管理,官方建议是没必要用 content provider 的,额。。。我想可能用起来比较麻烦吧,也可能官方的意思更希望 content provider 用于应用间的数据通信。
网友评论