`
xpchou
  • 浏览: 15525 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

android基础03

阅读更多
1.第一次调用getWritableDatabase()或getReadableDatabase()方法后,SQLiteOpenHelper会缓存当前的SQLiteDatabase实
例,SQLiteDatabase实例正常情况下会维持数据库的打开状态,所以在你不再需要SQLiteDatabase实例时,请及时调用
close()方法释放资源。一旦SQLiteDatabase实例被缓存,多次调用getWritableDatabase()或getReadableDatabase()
方法得到的都是同一实例。

2.使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction()
方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。

3.SqlLite数据库的主键id,最好为 "_id" ,否则查询的时候得 select id as _id from...

4.使用ContentProvider对外共享数据的好处是统一了数据的访问方式

5.URI代表要操作的数据,由scheme、authorites、path三部分组成
content://cn.itcast.sqlite.provider/person
scheme:固定为content,代表访问内容提供者
authorites:<provider>节点中的authorites属性
path:程序定义的路径,可根据业务逻辑定义

6.UriMatcher类用于匹配Uri,它的用法如下:
UriMatcher  sMatcher = new UriMatcher(UriMatcher.NO_MATCH); 常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码,值为 -1
sMatcher.addURI(“cn.itcast.provider.personprovider”, “person”, 1); 添加(注册)需要匹配uri,如果匹配就会返回匹配码 1

sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2); #号为通配符,如果match()方法匹配.../person/230路径,返回匹配码为2
switch (sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))) {
   case 1
break;
   case 2
break;
   default: 不匹配
break;
}

7.ContentUris类用于获取Uri路径后面的ID部分,它有两个比较实用的方法:
withAppendedId(uri, id)用于为路径加上ID部分:
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")
Uri resultUri = ContentUris.withAppendedId(uri, 10);
生成后的Uri为:content://cn.itcast.provider.personprovider/person/10

parseId(uri)方法用于从路径中获取ID部分:
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10")
long personid = ContentUris.parseId(uri);//获取的结果为:10

8.当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成,要
获取ContentResolver对象,可以使用Activity提供的getContentResolver()方法。

9.内容提供者的使用流程

1.如果a应用想把自己的数据库暴露给别的应用程序使用
就必须实现contentprovider
创建一个类 继承系统的ContentProvider
一定要在清单文件里面配置
指定uri的主机名 cn.itcast.db.personprovider

2. 定义匹配规则
根据数据库的表结构 定义匹配规则
content://cn.itcast.db.provider/persons
content://cn.itcast.db.provider/person/10

也可以根据业务方法, 指定匹配规则
content://cn.itcast.db.provider/delete/10

3.在别的应用里面 获取contentResolver

contentResolver.query()
   .delete()
   .insert();

10.如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头
如果要操作的数据属于非集合类型数据,那么MIME类型字符串应该以vnd.android.cursor.item/开头

11. BaseAdapter
调用getItemAtPosition方法可以获取点击的条目上的对象
BaseAdapter会返回自定义的getItem方法中返回的对象

12.ContentProvider
1.ContentProvider的作用
用来将当前应用中的数据进行共享, 提供增删改查方法对数据进行包装, 在ContentProvider上可以添加ContentObserver, 用来监听数据变化
2.创建ContentProvider
定义类继承ContentProvider, 重写6个抽象方法
在清单文件中的<application>节点下, 声明<provider>节点, 指定类名和主机名(provider的唯一标识)
3.调用ContentProvider
使用当前应用的上下文对象, 调用getContentResolver()获得一个解析器, 然后就可以调用解析器的增删改查方法了
4.增删改查方法
用UriMatcher来判断传入的Uri
使用SQLiteDatabase类的insert, delete, update, query等方法操作数据库, 将调用Provider时传入的参数传入到数据库中
5.ContentObserver
可以给一个ContentProvider注册一个观察者
调用ContentResolver的registerContentObserver方法, 在指定的Uri上注册一个Observer
Observer是自定义一个类继承ContentObserver, 重写onChange方法
如果Provider中调用了notifyChange方法, 那么Observer就会执行onChange方法

13.ContentResolver的方法返回值:
1.insert方法返回的是 Uri
2.update和delete方法返回的是 int
3.query方法返回的是 Cursor

14.监听短信
1.短信数据都存储在com.android.providers.telephony项目的数据库中
2.从 https://github.com/android 网站上可以下载到源代码, 查看清单文件, 可以得知这个数据库有提供provider, 而provider的authorities为sms
3.在这个provider上注册一个Observer, 如果数据改变, 就使用Provider查询数据库
分享到:
评论

相关推荐

    Android基础-03

    Android基础-03

    android基础代码教学03

    android基础代码教学03 android基础代码教学03

    Android程序设计基础03.pptx

    适合于初学者,内容很基础,希望你们可以好好利用。适合于初学者,内容很基础,希望你们可以好好利用。适合于初学者,内容很基础,希望你们可以好好利用。

    Android开发相关的学习资料

    Android资源_01-Android开发环境搭建_实验01-Android开发环境搭建.pdf、实验02-Android应用开发HelloWorld.pdf; 02-Android Studio项目结构...04-Android基础功能程序设计_实验10-Android基础功能程序设计.pdf......

    03、JAVA【Android开发】Android基础知识精讲视频

    本教程是本人在学习JAVA【Android开发】时候珍藏的视频,视频讲的很细,对学习Android开发大有助益 本套教程从php基础语法开始,一直讲解到实战开发项目。 本教程一共有十个部分,因为大小的关系,无法一起上传,...

    HM安卓74期全套视频教程 基础+就业.rar

    02、Android基础 03、手机安全卫士 04、自定义控件 05、JNI 06、智慧北京 07、谷歌电子市场 08、QQ5.0特效专辑 09、开源中国 10、android5.0新特性+android studio 11、智能家居 12、面试题详解+就业指导 13、百度...

    千锋Android游戏开发基础视频教程(10集)

    教程名称: 千锋Android游戏开发基础视频教程(10集)【】千锋Android游戏开发基础视频教程-大纲【】千锋Android游戏开发基础视频教程01~02【】千锋Android游戏开发基础视频教程03~04【】千锋Android游戏开发基础...

    Android代码-Android_Learning_Notes

    3、Android03--Context和Application 4、Android04--Android服务 5、Android05--Android服务通信 6、Android06--Android广播接收器 7、Android07--Android日志系统 8、Android08--Android权限系统 用户界面 9、...

    大话企业级Android开发

    03大话企业级Android开发开发流程及项目管理 04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析 05大话企业级Android开发_MVC讲解及简单短信和拨号器实现 06大话企业级Android开发_日志输出、...

    疯狂android讲义03

    android开发,推荐给有java基础的

    企业级Android开发

    04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析 05大话企业级Android开发_MVC讲解及简单短信和拨号器实现 06大话企业级Android开发_日志输出、单元测试及调试 07大话企业级Android开发_UI...

    零基础入门Android(安卓)逆向-rar

    03.Android smali 与 java 代码介绍2 c+ K& I/ q( b 04.Android smali 与 java 代码介绍3 % ]7 Z+ f! I! [5 S. O. N 05.Android smali 与 java 代码介绍4 7 A9 G6 c k; B 06.Android smali 与 java 代码介绍5 ; [. ...

    新版Android开发教程

    新版Android开发教程&笔记03--环境搭建与解析 新版Android开发教程&笔记04--Dalvik ADB 新版Android开发教程+笔记05--模拟器、应用1、2 新版Android开发教程+笔记06--应用3、4 布局 新版Android开发教程+笔记07--...

    Android手游绘制基础-03读取内存数据的工具和样本

    学习笔记Android手游绘制基础--03读取内存数据的gg修改器和飞机大战的安装包,可以根据01-03的文章来笔记来读取分数,主要是学习如何读取和验证分数,当读取出来的分数和显示的分数对应上了,就表示最简单的读取成功...

    Android经典资料大全 part03

    Android经典资料(Google and Android开发入门与实践、Google and android 揭秘、Google android SDK开发范例大全、深入浅出Android、...开发、Android基础教程等,还有几本英文书籍) 共8个压缩文件,请下全后解压

    基于Android平台软件开发方法的研究与应用

    随着时代的发展,人们对于信息的获取有着强烈的需求。智能手 机作为一种非常重要的通讯工具,功能越来越强大,相对...在此基础上,运用这两种开发方 法分别设计实现了Android音视频编解码软件和Android录音机软 件。

    android课件

    清华老师上课的android课件。ch_01android概述ch_02android开发基础ch_03资源的访问ch_04android用户界面ch_05Ativity和Intent。其他自己看。

    企业级安卓开发_入门+进阶 大话企业级Android开发

    04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析 05大话企业级Android开发_MVC讲解及简单短信和拨号器实现 06大话企业级Android开发_日志输出、单元测试及调试 07大话企业级Android开发_UI...

    黑马安卓52期android 教程

    03、android案例与项目_手机安全卫士(12天) 04、自定义控件与视图(2天) 05、android项目实战_智慧北京(6天) 06、android项目实战_谷歌应用市场(6天) 07、android进阶高阶案例-QQ5.0特效专辑(2天) 08、...

    Android高级应用开发教学视频-Android高级应用开发.z03

    Stage2_Lesson3Android应用开发基础及原理概要 Stage2_Lesson4Activity与Intent Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver ...

Global site tag (gtag.js) - Google Analytics