Android面试题:ContentProvider
1. 请介绍下ContentProvider是如何实现数据共享的
在Android中如果想将自己应用的数据(一般多为数据库中的数据)提供给第三发应用,那么我们只能通过ContentProvider来实现了。
ContentProvider是应用程序之间共享数据的接口。使用的时候首先自定义一个类继承ContentProvider,然后覆写query、insert、update、delete等方法。因为其是四大组件之一因此必须在AndroidManifest文件中进行注册。
<provider android:name="com.jackchan.contenProvider.provider.PersonContentProvider"
android:authorities="com.itheima.person"
android:exported="true"/>
第三方可以通过ContentResolver来访问该Provider。
2. 请介绍下Android的数据存储方式
- File存储
- SharedPreference存储
- ContentProvider存储
- SQLiteDataBase存储
- 网络存储
3. 为什么要用ContentProvider?它和sql的实现上有什么差别?
ContentProvider屏蔽了数据存储的细节,内部实现对用户完全透明,用户只需要关心操作数据的uri就可以了,ContentProvider可以实现不同app之间共享。
Sql也有增删改查的方法,但是sql只能查询本应用下的数据库。而ContentProvider 还可以去增删改查本地文件. xml文件的读取等。
4. 说说ContentProvider、ContentResolver、ContentObserver之间的关系
- ContentProvider 内容提供者,用于对外提供数据
- ContentResolver.notifyChange(uri)发出消息
- ContentResolver 内容解析者,用于获取内容提供者提供的数据
- ContentObserver 内容监听器,可以监听数据的改变状态
- ContentResolver.registerContentObserver()监听消息