Chinaunix首页 | 论坛 | 博客
  • 博客访问: 521333
  • 博文数量: 1344
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 14890
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-14 20:31
文章分类

全部博文(1344)

文章存档

2010年(1344)

我的朋友

分类:

2010-10-22 19:37:44

  android的数据(包括files, database等...)都是属于应用程序自身,其他程序无法直接进行操作。因此,为了使其他程序能够操作数据,在android中,可以通过做成 contentprovider提供数据操作的接口。其实对本应用而言,也可以将底层数据封装成contentprovider,这样可以有效的屏蔽底层操作的细节,并且是程序保持良好的扩展性和开放性。   contentprovider,顾名思义,就是数据内容的供应者。在android中它是一个数据源,屏蔽了具体底层数据源的细节,在contentprovider内部你可以用android支持的任何手段进行数据的存储和操作,可能比较常用的方式是基于android的sqlite数据库(恩,文档中和示例代码都是以此为例)。无论如何,contentprovider是一个重要的数据源,可以预见无论是使用和定制contentprovider都会很多。于是花了点时间仔细看了看。   数据库操作   从我目前掌握的知识来看,sqlite比较轻量(没有存储过程之类的繁杂手段),用起来也比较简单。实例化一个sqlitedatabase类对象,通过它的apis可以搞定大部分的操作。从sample中看,android中对db的使用有一种比较简单的模式,即派生一个 contentproviderdatabasehelper类来进行sqlitedatabase对象实例的获取工作。基本上, contentproviderdatabasehelper类扮演了一个singleton的角色,提供单一的实例化入口点,并屏蔽了数据库创建、打开升级等细节。在contentprovider中只需要调用contentproviderdatabasehelper的opendatabase方法获取sqlitedatabase的实例就好,而不需要进行数据库状态的判断。   uri   像进行数据库操作需要用sql一样,对contentproivder进行增删改查等操作都是通过一种特定模式的uri来进行的(ig:content: //provider/item/id),uri的能力与url类似,具体细节可以查看sdk。建立自己的contentprovider,只需要派生 contentproivder类并实现insert, delete, update等抽象函数即可。在这些接口中比较特殊的是gettype(uri)。根据传入的uri,该方法按照mime格式返回一个字符串(==!没听过的诡异格式...)唯一标识该uri的类型。所谓uri的类型,就是描述这个uri所进行的操作的种类,比如content://xx/a与 content://xx/a/1不是一个类型(前者是多值操作,后者是单值),但content://xx/a/1和content://xx/a/2 就会是一个类型(只是id号不同而已)。 编缉推荐阅读以下文章 ">android 2.0常用功能截图 ">实现一个用于显示当前时间的google android 窗口小部件(appwidget) ">android和ophone模拟器界面对比 ">在android(ophone)模拟器中加载和使用sdcard卡 ">android教程之实现动作感应技术 ">android入门第六篇之listview (一) ">android入门第五篇之tablelayout (二) ">android入门第四篇之tablelayout (一) ">android入门第三篇之relativelayout、framelayout ">android入门第二篇之linearlayout、absolutelayout 如果喜欢contentprovider数据模型概述请收藏或告诉您的好朋友.
阅读(178) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~