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()监听消息

results matching ""

    No results matching ""