Android学习笔记十五.使用ContentProvider实现数据共享(一)

一、Android如何实现数据共享? 
    为了在应用程序之间交换数据,Android提供了ContentProvider,ContentProvider是不同应用程序之间进行数据交换的标准API,当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序就可通过提供ContentProvider来实现,其他的应用程序就可以通过ContentResolver来操作ContentProvider暴露的数据。一旦某个应用程序通过ContentProvider暴露了自己的数据操作接口,那么不管该应用程序是否启动,其他应用程序都可以通过该接口来操作该应用程序的内部数据,包括增加数据、删除数据、修改数据、查询数据等。
总结:A应用通过ContentProvider暴露自己的数据,B应用通过ContentResolver来操作ContentProvider暴露的数据。
        A应用以某种Uri的形式对外提供数据,B应用使用ContentResolver根据A应用提供的Uri获得A应用的authority 属性去访问操作指定的数据。
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)
二、ContentProvider与
ContentResolver简介

1.功能
(1)ContentProvider是不同应用程序之间进行数据交换的标准API,ContentProvider以某种Uri的形式对外提供数据,运行其他应用访问或修改数据,即其他应用程序使用ContentResolver根据Uri去访问操作指定数据, UriMatcher类用于帮助解
析URI。在实际应用中,自定义的ContentProvider类除了需要继承ContentProvider之外,还需要同时实现以下方法(均为抽象方法):
    - abstract boolean onCreate()
    - abstract Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
     -abstract Uri insert(Uri uri, ContentValues values)
    - abstract int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
    - abstract int delete(Uri uri, String selection, String[] selectionArgs)
    - abstract String getType(Uri uri) 
(2)Contentprovider相当于一个"网站",它的作用是暴露可供提供操作的数据。其他应用程序则通过ContentResolver来操作ContentProvider所暴露的数据,即ContentResolver相当于HttpClient。
    一般来说,ContentProvider是单实例模式,当多个应用程序通过ContentResolver来操作ContentProvider提供的数据时,ContentResolver调用的数据操作将会委托给同一个ContentProvider处理

升华笔记1:ContentResolver是如何实现访问、修改Uri对应的ContentProvider中的数据?
    从ContentResolver、ContentProvider和Uri的关系来看,Uri是ContentResolver和ContentProvider进行数据交换的标识。
    ContentResolver对指定Uri执行CRUD等数据操作,但Uri并不是真正的数据中心,因此这些CRUD操作会委托给该Uri对应的ContentProvider来实现。举个例子:假如 B应用 通过ContentResolver执行CUUD操作,这些CRUD操作都需要指定Uri参数,Android系统就根据该Uri找到对应的ContentProvider(该ContentProvider属于 A应用 ),ContentProvider复杂实现CRUD方法,完成对底层数据的增、删、改、查等操作,即实现了 B应用访问A应用数据 的目的。
注释:这里的CRUD操作,指的是当B应用调用ContentResolver的insert()方法是,实际上相当于调用了该Uri对应的ContentProvider(属于A应用)的insert()方法。

2.API
ContentProvider
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值