您的位置:首页 > 编程语言 > PHP开发

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 入口