1.系统自带的许多数据(联系人,本地信息等)保存在sqllite数据库,然后封装成许多ContentProvider来供其他程序访问。

2.对sqllite数据库的操作,可以在命令行通过adb工具登录设备运行sqlite3来操作。
3.ContentProvider 是用URI来标示,访问程序通过URI来访问相应的数据,URI的结构是
   content://***/*/*...其中***是授权,在ContentProvider提供程序的说明文件中声明,后面的*表示路径,具体由ContentProvider实现来解释,ContentProvider为简化URI的调用,将这种URI定义为常量字符串供查看和调用。
 
4.客户端通过URI和需要获取的列,选择条件,排序条件等用相应的api来获取结果,结果是一个android Cursor,可以使用相应的方法获取结果集中的内容,返回的数据是MIME格式,类型/子类型。
 
5.android内置
 
 
6.从Context中获取ContentResolver,然后ContentResolver通过URI  进行AUD ContentProvider操作
7.可以通过managedQuery方法获取一个ContentProvider数据集合(Cursor)然后通过Cursor类的,moveFirst() afterLast() moveNext()来遍历数据,并可以先获取列索引(Cursor.getColumnIndex(columnName)),然后根据索引获取列值(Cursor.getString(ColumnIndex))
 
8.where子句可以通过URI和参数两种方式,orderby子句可以通过参数,having可以通过参数指定。
9.操作记录时需要一个ContentValues类型,该类型为键值对,键为列名值为需要插入的值。insert操作会返回插入记录的URI
10.将文件添加到ContentProvider中。
     10.1通过一个insert操作获取URI
     10.1通在URI上使用(ContentResolver.openOutputStream(URI)来让提供程序产生一个内部文件,并将文件名保存在保留列_data上,然后返回这个内部文件的输出流。
 
11.实现一个ContentProvider的几个步骤
    11.1 计划数据库,URI及列名称,创建元数据类来定义所有这些数据元素常量
    11.2扩展抽象类ContentProvider
    11.3实现方法query,insert,update,delete和getType
    11.4在描述文件中注册提供程序。
 
12 扩展ContentProvider
     12.1扩展ContentProvider时需要定义和初始化一个列名称与别名的map,就算没有别名也需要。
     12.2用UriMatcher来识别uri
     12.3通过扩展SQLiteOpenHelper类来创建数据库,创建表,获取数据库实例。
     
 

android 学习四 ContentProvider的更多相关文章

  1. android学习四(Activity的生命周期)

    要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...

  2. android学习四---Activity和Intent

    1.android项目资源深入了解 在深入学习android之前,先好好玩玩手机上的应用,大部分程序都有一个图标,点开图标,程序启动,一定时间后,程序会跳转到第一个界面,比如手机QQ,点开图标,会跳出 ...

  3. Android学习四:数据库操作

    1前言 android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包.SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库. 2代码 简单的数据库类封装 packa ...

  4. Android学习四、Android中的Adapter

    一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for t ...

  5. openfire Android 学习(四)----单人聊天和多人聊天(发送消息、接收消息)

    一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFriendChat()获取 [java] view plainco ...

  6. Android学习记录(3)—Android中ContentProvider的基本原理学习总结

    一.ContentProvider简介        当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据 ...

  7. 五、Android学习第四天补充——Android的常用控件(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...

  8. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...

  9. Android学习笔记(四十):Preference的使用

    Preference直译为偏好,博友建议翻译为首选项.一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择.Android提供preferenc ...

随机推荐

  1. 系统监控zabbix

    zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统 ...

  2. empty() isset() isnull() 比较

    有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚.这里再重复一次,但不是从概念去说,直接用程序例子来说话,应 ...

  3. docker-1-简介

    Dockers的出现: 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西, 这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不 ...

  4. Redis数据类型(上)

    数据类型 1.string(字符串) 2.hash(哈希,类似java里的Map) 3.list(列表) 4.set(集合) 5.zset(sorted set:有序集合) 6.基数 String(字 ...

  5. sqlserver事务怎么开启 怎么提交 怎么回滚

    1.自动transaction每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值. 2.ExplicitTransac ...

  6. 清空oracle session

    select 'alter system kill session '''||sid|| ','||serial#||''';' from v$session where username =' ';

  7. ng2-bootstrap的modal嵌套时无法滚动的情况

    在ng2-bootstrap的弹窗modal中再弹出另外一个弹窗,关闭子弹窗后,父弹窗会出现无法上下滚动的情况. 通过观察样式可知,关闭子弹窗前,父弹窗的body上是有modal-open样式的,关闭 ...

  8. java项目如何使用ajax来减少页面的刷新

    之前写项目,总是用重定向或请求转发,导致每做一步动作就会刷新页面,客户体验不好,而且效率低下,这种问题可以使用ajax来有效的解决此类问题的发生. 我使用的框架:Spring boot 数据库:mys ...

  9. java中强引用、软引用、弱引用、幻象引用有什么区别?分别使用在什么场景?

    不同的引用类型,主要体现在对象的不同可达性(reachable)状态和对垃圾收集的影响. 1.强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就表明对象还"活着",垃 ...

  10. 一点一点看JDK源码(五)java.util.ArrayList 后篇之SubList

    一点一点看JDK源码(五)java.util.ArrayList 后篇之SubList liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) S ...