Android四大组件之一ContentProvider

Android四大组件之一ContentProvider

八月 06, 2019

ContentProvider

1、 ContentProvider 是如何实现数据共享的

在 Android 中如果想将自己应用的数据(一般多为数据库中的数据)提供给第三发应用,那么我们只能
通过 ContentProvider 来实现了。

ContentProvider 是应用程序之间共享数据的接口。使用的时候首先自定义一个类继承
ContentProvider,然后 覆写 query、insert、update、delete 等方法。因为其是四大组件之一因此
必须在 AndroidManifest 文件中进行注 册。

1
2
3
<provider android:exported="true" 
android:name="com.itheima.contenProvider.provider.PersonContentPro
vider"android:authorities="com.itheima.person" />

第三方可以通过 ContentResolver 来访问该 Provider。

2、为什么要用 ContentProvider它和 sql 的实现上有什么差别

ContentProvider 屏蔽了数据存储的细节,内部实现对用户完全透明,用户只需要关心操作数据的 uri 就
可以了, ContentProvider 可以实现不同 app 之间共享。

Sql 也有增删改查的方法,但是 sql 只能查询本应用下的数据库。而 ContentProvider 还可以去增删
改查本 地文件. xml 文件的读取等。

3、ContentProvider、ContentResolver、ContentObserver 之间的关系

ContentProvider 内容提供者,用于对外提供数据

ContentResolver.notifyChange(uri)发出消息

ContentResolver 内容解析者,用于获取内容提供者提供的数据

ContentObserver 内容监听器,可以监听数据的改变状态

ContentResolver.registerContentObserver()监听消息。

4、在高并发下进行数据库查询

(这个问题的回答很广泛,可以自由发挥)
比如:不要关联多表查询,减少链接时间,创建索引、将查询到的数据采用缓存策略等等。