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查询数据库
例,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基础08
2012-08-15 20:18 8401.Notification(状态栏通知) ... -
android基础07
2012-08-15 20:18 9161.SoundPool 指定声音池的最大音频流数目为10,声 ... -
android基础06
2012-08-15 20:18 6991.广播接收者 用于接 ... -
android基础05
2012-08-11 22:39 9761.显示意图三种创建方式: 构造函数,代码少 new I ... -
android基础04
2012-08-11 22:38 6481.利用HttpURLConnection对象,我们可以从网络 ... -
android基础02
2012-08-11 21:52 6341.context.openFileOutput(" ... -
android基础01
2012-08-11 21:50 6021.Android体系结构 1.linux内核 2.Lib ... -
黑马程序员-java基础06天
2012-02-22 22:37 3---------------------- android培 ... -
黑马程序员-java基础05天
2012-02-20 23:40 24---------------------- android培 ... -
黑马程序员-java基础04天
2012-02-15 23:28 46---------------------- android培 ... -
黑马程序员-java基础03天
2012-02-12 14:09 9---------------------- android培 ... -
黑马程序员-java基础02天
2012-02-11 13:36 36---------------------- android ... -
黑马程序员-java基础01天
2012-02-06 20:44 11---------------------- android培 ...
相关推荐
Android基础-03
android基础代码教学03 android基础代码教学03
适合于初学者,内容很基础,希望你们可以好好利用。适合于初学者,内容很基础,希望你们可以好好利用。适合于初学者,内容很基础,希望你们可以好好利用。
Android资源_01-Android开发环境搭建_实验01-Android开发环境搭建.pdf、实验02-Android应用开发HelloWorld.pdf; 02-Android Studio项目结构...04-Android基础功能程序设计_实验10-Android基础功能程序设计.pdf......
本教程是本人在学习JAVA【Android开发】时候珍藏的视频,视频讲的很细,对学习Android开发大有助益 本套教程从php基础语法开始,一直讲解到实战开发项目。 本教程一共有十个部分,因为大小的关系,无法一起上传,...
02、Android基础 03、手机安全卫士 04、自定义控件 05、JNI 06、智慧北京 07、谷歌电子市场 08、QQ5.0特效专辑 09、开源中国 10、android5.0新特性+android studio 11、智能家居 12、面试题详解+就业指导 13、百度...
教程名称: 千锋Android游戏开发基础视频教程(10集)【】千锋Android游戏开发基础视频教程-大纲【】千锋Android游戏开发基础视频教程01~02【】千锋Android游戏开发基础视频教程03~04【】千锋Android游戏开发基础...
3、Android03--Context和Application 4、Android04--Android服务 5、Android05--Android服务通信 6、Android06--Android广播接收器 7、Android07--Android日志系统 8、Android08--Android权限系统 用户界面 9、...
03大话企业级Android开发开发流程及项目管理 04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析 05大话企业级Android开发_MVC讲解及简单短信和拨号器实现 06大话企业级Android开发_日志输出、...
android开发,推荐给有java基础的
04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析 05大话企业级Android开发_MVC讲解及简单短信和拨号器实现 06大话企业级Android开发_日志输出、单元测试及调试 07大话企业级Android开发_UI...
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开发教程&笔记03--环境搭建与解析 新版Android开发教程&笔记04--Dalvik ADB 新版Android开发教程+笔记05--模拟器、应用1、2 新版Android开发教程+笔记06--应用3、4 布局 新版Android开发教程+笔记07--...
学习笔记Android手游绘制基础--03读取内存数据的gg修改器和飞机大战的安装包,可以根据01-03的文章来笔记来读取分数,主要是学习如何读取和验证分数,当读取出来的分数和显示的分数对应上了,就表示最简单的读取成功...
Android经典资料(Google and Android开发入门与实践、Google and android 揭秘、Google android SDK开发范例大全、深入浅出Android、...开发、Android基础教程等,还有几本英文书籍) 共8个压缩文件,请下全后解压
随着时代的发展,人们对于信息的获取有着强烈的需求。智能手 机作为一种非常重要的通讯工具,功能越来越强大,相对...在此基础上,运用这两种开发方 法分别设计实现了Android音视频编解码软件和Android录音机软 件。
清华老师上课的android课件。ch_01android概述ch_02android开发基础ch_03资源的访问ch_04android用户界面ch_05Ativity和Intent。其他自己看。
04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析 05大话企业级Android开发_MVC讲解及简单短信和拨号器实现 06大话企业级Android开发_日志输出、单元测试及调试 07大话企业级Android开发_UI...
03、android案例与项目_手机安全卫士(12天) 04、自定义控件与视图(2天) 05、android项目实战_智慧北京(6天) 06、android项目实战_谷歌应用市场(6天) 07、android进阶高阶案例-QQ5.0特效专辑(2天) 08、...
Stage2_Lesson3Android应用开发基础及原理概要 Stage2_Lesson4Activity与Intent Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver ...