8、四大组件之三-ContentProvider

课程目标:

理解ContentProvider的作用及好处

认清ContentProvider与数据存储的关系 

掌握ContentProvider对外提供的数据模型形式

能够编写ContentResolver的增删改查

能够自定义一个ContentProvider ,能够提供进程间访问

了解ContentProvider 内部机制

重点难点:

ContentProvider与数据操作的关系

ContentProvider内部机制

 考核目标:

 说说ContentProvider与Android数据存储的关系?

 ContentProvider对象何时被实例化?

 ContentProvider数据模型画出来

 ContentProvider的机制是什么?

 

一、为什么要有ContentProvider?

1)我们之前的存储都是放在具体应用程序下面(具体的私有路径,限制访问权限),如何能够共享呢?

2)系统由于安全的因素,提供的一些数据访问,不能直接开放给开发者,如何让开发者能够访问到这些数据呢?

3)如果我写好的数据库程序,希望封装并且提供一套公共标准,让外部调用而不直接操作我的数据库,如何做呢?

 

二、特性

唯一的共享程序间数据方式。

android没有提供公共数据区让不同的程序去共享访问。

 

三、ContentProvider是什么?

1)ContentProvider是一套存储访问数据的通道,让你无需了解下面的存储细节实现数据操作及共享。

2)无论具体存储是如何的,存在哪儿的,但对外提供的模型是统一的。

     ContentProvider 实际上是个管道,把表提供出来。

3)定义了ContentProvider对象,会在系统初始化的时候自动实例化,无需我们手动去实例化对象。

4)我们只需要通过ContentResolver去取的和操作数据即可。

 

四、ContentResolver与ContentProvider配对

 

五、URI

 

六、系统提供的ContentProvider

Browser :浏览器的书签 ,历史记录等。

CallLog :呼叫记录。包括呼入呼。

ContactsContract :通讯录相关信息。

Calendar :日历相关信息。

MediaStore :媒体存储。

Settings :系统设置信息的部分内容。

UserDictionary :用户词典内容。

 

七、增删改查

 

八、查询系统通讯录

 

九、创建自己的ContentProvider

 

十、猜猜ContentProvider机制是什么样的 ?

 

十一、FAQ:ContentProvider调用的时候宿主进程生命周期

接受调用的时候启动宿主进程 , 操作完毕后,宿主进程为empty

 

原文地址:https://www.cnblogs.com/androidsj/p/3972437.html