Android四大组件之ContentProvider

ContentProvider是什么

它的诞生就是为了给不同应用提供内容访问,自然在我们研究的“多进程通信方式”之中。
ContentProvider 封装了数据的跨进程传输,我们可以直接使用 getContentResolver() 拿到 ContentResolver 进行增删改查即可。
ContentProvider 以一个或多个表(与在关系型数据库中的表类似)的形式将数据呈现给外部应用。 行表示提供程序收集的某种数据类型的实例,行中的每个列表示为实例收集的每条数据。
实现一个 ContentProvider 时需要实现以下几个方法:

onCreate():初始化 provider
query():查询数据
insert():插入数据到 provider
update():更新 provider 的数据
delete():删除 provider 中的数据
getType():返回 provider 中的数据的 MIME 类型
注意:
1. onCreate() 默认执行在主线程,别做耗时操作,query() 也最好异步执行
2. 上面的 4 个增删改查操作都可能会被多个线程并发访问,因此需要注意线程安全

ContentResolver是什么

ContentResolver意思是内容解析者,当需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,就可以使用ContentResolver类来完成,通过Context对象中的getContentResolver()方法获取该类的实例

URI是什么,标准格式是什么

内容 URI 统一的形式就是:

content://authority/path

例如:

content://user_dictionary/words

当你调用 ContentResolver 方法来访问 ContentProvider 中的表时,需要传递要操作表的 URI。
在通过 ContentResolver 进行数据请求时(比如 contentResolver.insert(uri, contentValues);), 系统会检查指定 URI 的 authority 信息,然后将请求传递给注册监听这个 authority 的 ContentProvider 。这个 ContentProvider 可以监听 URI 想要操作的内容,Android 中为我们提供了 UriMatcher 来解析 URI。

UriMatcher是什么

Uri代表了要操作的ContentProvider,那我们怎么解析Uri,并从Uri中获取数据呢。Android系统给我们提供了两个用于操作Uri的工具类,分别为UriMatcher和ContentUris
UriMatcher本质是一个文本过滤器,使用UriMatcher就可以轻松实现匹配URI的功能,UriMatcher中提供了一个addURI()方法,第一个参数是就是主机名”content://com.example.ContentTest”,第二个参数是路径,第三个参数是匹配码

uriMatcher.addURI("content://com.example.ContentTest", "student", 1);
阅读更多
换一批

没有更多推荐了,返回首页