文章仅做个人笔记使用:
它们封装数据并通过单个ContentResolver接口将其提供给应用程序 。仅当需要在多个应用程序之间共享数据时,才需要内容提供程序。例如,联系人数据由多个应用程序使用,并且必须存储在内容提供商中。如果您不需要在多个应用程序之间共享数据,也可以使用它们,它们提供了很好的抽象,这种抽象使您可以对应用程序数据存储实现进行修改,而不会影响依赖于数据访问的其他现有应用程序,可以直接通过使用数据库 SQLiteDatabase。必须在清单中声明。
onCreate():用来初始化提供者
query(Uri, String[], Bundle, CancellationSignal): 它将数据返回给调用者
insert(Uri, ContentValues):将新数据插入内容提供者
update(Uri, ContentValues, Bundle):更新内容提供者中的现有数据
delete(Uri, Bundle):从内容提供商删除数据
getType(Uri): 返回内容提供程序中数据的MIME类型
insert()、update()、delete()、getType()可以从多个线程调用,并且是线程安全的。onCreate()只能从应用程序主线程调用,并且不能做耗时操作。
ContentResolver:内容解析者
通过相应的规则解析内容提供者提供的数据。
ContentObserver:内容监听者
目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器,相应地ContentObsever也分为表ContentObserver、行ContentObserver,当然这是与它所监听的Uri MIME Type有关的。