ContentProvider入门
2016-05-11 14:45
309 查看
ContentProvider是安卓的四大组件之一,提供应用之间的数据交互。
对ContentProvider的理解:
每个应用在手机上都有一个自己的仓库(存储空间),用来保存应用的数据。但是有的时候需要把自己的应用数据提供给别人用,或者别人需要主动的来得到你的数据。以往的做法是,谁用我的数据,就让他自己进入我的仓库来拿(直接访问应用存储空间获取数据),但是这样很不安全啊,我甚至都不知道是谁对我的仓库做了哪些操作拿了哪些东西。为了提高仓库的安全性,不被别人随便访问,最好的办法就是雇个门卫过来看着仓库的大门了,这个门卫就是ContentProvider啦。为了不让别人进入仓库,你需要告诉门卫怎样取出仓库里的东西,其他应用不能进入仓库,只能告诉门卫要取什么东西,然后让门卫去取。这样其他应用就不能直接接触你的仓库了。但是别的应用让谁去跟门卫打交道呢,为了降低门卫的工作复杂度,我们直接指定了要跟门卫接触的必须是一个取件人:ContentResolver。去件人ContentResolver跟门卫有共同的语言,他们之间的交流我们不必理会,反正你传达给取件人的东西,他会直接让门卫执行的。所以每个应用如果需要访问别人的应用都需要雇佣一个取件人,告诉他你要干什么,让他去取回东西。而每个应用如果打算让别人从自己的仓库取东西就要雇个门卫看门。仓库拥有着和打算访问仓库者都把取东西的任务交给别人了,还剩下最后一个问题:我派出去的去件人怎么找到我要取件的那个仓库呢?手机那么多应用,那么多仓库。。。。这就需要给取件人一个门牌号uri了,要访问的仓库的门卫会把这个uri门牌号贴在门上(Manifest),去件人只要按照门牌号去找就可以了。
根据上面的理解,ContentProvider的使用步骤为:
1、仓库拥有者雇佣门卫ContentProvider:定义一个ContentProvider
2、仓库拥有着告诉门卫怎样管理仓库:重写ContentProvider的数据操作方法(update、delete、insert、query)
3、门卫把门牌号贴在门上:在Manifest文件中声明provider,并设置其属性authorities="门牌号uri"
以上仓库拥有者就设置完毕了,提供数据的应用只需要做这些东西啦。
下面就是打算访问别人的数据的应用要做的事了:
1、雇佣一个收件人:getContentResolver得到ContentResolver对象
2、告诉他门牌号:uri。告诉他去干什么(取数据?删除数据?。。),直接调用ContentResolver对应的方法(update、delete、insert、query),他会告诉门卫怎么做
3、他的返回值就是得到的数据了(或者操作结果了)
对ContentProvider的理解:
每个应用在手机上都有一个自己的仓库(存储空间),用来保存应用的数据。但是有的时候需要把自己的应用数据提供给别人用,或者别人需要主动的来得到你的数据。以往的做法是,谁用我的数据,就让他自己进入我的仓库来拿(直接访问应用存储空间获取数据),但是这样很不安全啊,我甚至都不知道是谁对我的仓库做了哪些操作拿了哪些东西。为了提高仓库的安全性,不被别人随便访问,最好的办法就是雇个门卫过来看着仓库的大门了,这个门卫就是ContentProvider啦。为了不让别人进入仓库,你需要告诉门卫怎样取出仓库里的东西,其他应用不能进入仓库,只能告诉门卫要取什么东西,然后让门卫去取。这样其他应用就不能直接接触你的仓库了。但是别的应用让谁去跟门卫打交道呢,为了降低门卫的工作复杂度,我们直接指定了要跟门卫接触的必须是一个取件人:ContentResolver。去件人ContentResolver跟门卫有共同的语言,他们之间的交流我们不必理会,反正你传达给取件人的东西,他会直接让门卫执行的。所以每个应用如果需要访问别人的应用都需要雇佣一个取件人,告诉他你要干什么,让他去取回东西。而每个应用如果打算让别人从自己的仓库取东西就要雇个门卫看门。仓库拥有着和打算访问仓库者都把取东西的任务交给别人了,还剩下最后一个问题:我派出去的去件人怎么找到我要取件的那个仓库呢?手机那么多应用,那么多仓库。。。。这就需要给取件人一个门牌号uri了,要访问的仓库的门卫会把这个uri门牌号贴在门上(Manifest),去件人只要按照门牌号去找就可以了。
根据上面的理解,ContentProvider的使用步骤为:
1、仓库拥有者雇佣门卫ContentProvider:定义一个ContentProvider
2、仓库拥有着告诉门卫怎样管理仓库:重写ContentProvider的数据操作方法(update、delete、insert、query)
3、门卫把门牌号贴在门上:在Manifest文件中声明provider,并设置其属性authorities="门牌号uri"
以上仓库拥有者就设置完毕了,提供数据的应用只需要做这些东西啦。
下面就是打算访问别人的数据的应用要做的事了:
1、雇佣一个收件人:getContentResolver得到ContentResolver对象
2、告诉他门牌号:uri。告诉他去干什么(取数据?删除数据?。。),直接调用ContentResolver对应的方法(update、delete、insert、query),他会告诉门卫怎么做
3、他的返回值就是得到的数据了(或者操作结果了)
相关文章推荐
- Android中使用ContentProvider管理系统资源的实例
- 实例解析Android系统中的ContentProvider组件用法
- android之ContentResolver与ContentProvider介绍
- Android内容提供者ContentProvider用法实例分析
- 实例讲解Android中ContentProvider组件的使用方法
- Android编程使用内容提供者方式(ContentProvider)进行存储的方法
- Android开发之ContentProvider的使用详解
- Android ContentProvider+ContentObserver
- android原生的数据库实现[ContentProvider+SQLiteOpenHelpe...
- Android 应用程序之间数据共享—ContentResolver
- 浏览器与社交成智能机时代重要入口
- 寻找真正的入口(OEP)--广义ESP定律
- Android实现数据存储5种技术
- android中数据存储的ContentProvider的使用方法
- android手机应用程序操作手机通讯录的联系人
- ThinkPHP 入口 和配置 (个人习惯)
- ContentProvider(0)
- Android_03--四大组件_Activity+BroadcastReceiver+service+ContentProvider
- Contentprovider的学习实例总结
- ContentProvider 用途