android开发实例04:SQLite优化方法
2011-12-08 00:35
447 查看
今天写的东西虽然没有工程代码但是我觉得很重要!和大家分享下~~
SQLite的数据库本质文件读写操作,频繁操作打开和关闭是很耗时和浪费资源的;
优化方法事务机制:
这里要注意一点:事务的开启是要锁定DB的,其他对DB的写入操作都是无法成功的。
db.beginTransaction(); //手动设置开始事务
try {
//这里写你数据操作
db.setTransactionSuccessful();
//设置事务处理成功,不设置会自动回滚不提交
} catch (Exception e) {
} finaly {
db.endTransaction(); //提交
}
项目中不会把项目上万条数据存SQL里的,尽管android有SQLite。
那样处理起来非常慢,而且程序经常出现ANR。
打个比方:有200个城市,每个城市500条城市信息,你怎么创建表?
A:我创建一张表存10000条数据。
B:200张表,每张存500条数据。
C:我创建两张表,
一张存city,其实这张表只有1条数据;
Id(编号),
Version(这200个城市更新版本用)
CityDate(200个城市xml格式字符串数据)。
另一张表存城市信息表:200条数据,每个城市一条数据
id(CityDate解析出城市对象对应的id)
Version(这500条城市信息更新版本用)
CityMessage(500条城市信息xml格式字符串数据)。
首先你给用户展示200城市(你只取了一条数据 200个城市xml格式字符串数据进行解析)
用户点击一个城市你显示500条记录(通过城市解析ID,取出城市信息表中对应500数据xml格式字符串数据进行解析)
这样做的好处:
(1)统一数据接口,无论你从网络上直接去数据,还是读本地缓存统一数据接口,xml
(2)数据进行排序,内存操作要快一些;
(3)其实这和自己写文件没什么区别,为什么还要用数据库那,这么做有利于程序版本更新升级数据
维护!
SQLite的数据库本质文件读写操作,频繁操作打开和关闭是很耗时和浪费资源的;
优化方法事务机制:
这里要注意一点:事务的开启是要锁定DB的,其他对DB的写入操作都是无法成功的。
db.beginTransaction(); //手动设置开始事务
try {
//这里写你数据操作
db.setTransactionSuccessful();
//设置事务处理成功,不设置会自动回滚不提交
} catch (Exception e) {
} finaly {
db.endTransaction(); //提交
}
项目中不会把项目上万条数据存SQL里的,尽管android有SQLite。
那样处理起来非常慢,而且程序经常出现ANR。
打个比方:有200个城市,每个城市500条城市信息,你怎么创建表?
A:我创建一张表存10000条数据。
B:200张表,每张存500条数据。
C:我创建两张表,
一张存city,其实这张表只有1条数据;
Id(编号),
Version(这200个城市更新版本用)
CityDate(200个城市xml格式字符串数据)。
另一张表存城市信息表:200条数据,每个城市一条数据
id(CityDate解析出城市对象对应的id)
Version(这500条城市信息更新版本用)
CityMessage(500条城市信息xml格式字符串数据)。
首先你给用户展示200城市(你只取了一条数据 200个城市xml格式字符串数据进行解析)
用户点击一个城市你显示500条记录(通过城市解析ID,取出城市信息表中对应500数据xml格式字符串数据进行解析)
这样做的好处:
(1)统一数据接口,无论你从网络上直接去数据,还是读本地缓存统一数据接口,xml
(2)数据进行排序,内存操作要快一些;
(3)其实这和自己写文件没什么区别,为什么还要用数据库那,这么做有利于程序版本更新升级数据
维护!
相关文章推荐
- Android开发之SQLite优化
- Android中SQLite增删改查的方法(Android开发视频讲座)
- Android-本地方法C调用Java中的方法/NDK-JNI开发实例(六)
- Android-本地方法与Java相互调用-自定义ProgressBar(锅炉压力监测例子)/NDK-JNI开发实例(七)
- Android开发之SQLite的使用方法
- Android开发中的SQLite事务处理,即beginTransaction()方法
- Android开发中的SQLite事务处理,即beginTransaction()方法
- Android应用开发之将SQLite和APK一起打包的方法
- Android 开发笔记七 BaseAdpater 的使用及优化方法
- [android开发实例] sqlite+content provider+cursor adapter的最简单实现示例
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
- Android开发之SQLite的使用方法
- 浅谈Android开发中ListView控件性能的一些优化方法
- Android开发之SQLite的使用方法
- Android开发中的SQLite事务处理,即beginTransaction()方法...
- Android应用:Service开发实例(三)之Service的具体应用方法
- 实例讲解Android app开发中ListView的基本使用及优化
- Android开发之SQLite插入数据优化
- 浅谈Android开发中ListView控件性能的一些优化方法
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java