Android中个人推崇的数据库使用方式
手机应用开发中常常会使用到数据库存储一些资料或者进行数据缓存,android中为我们提供了一个轻量的数据库。在上层进行了一层封装,同一时候还为我们提供了ContentProvider的框架。方便我们进行数据操作。以及在不同的程序之间进行数据共享。
本文介绍一下,我在使用数据库的一些我觉得比較好的习惯,欢迎与我讨论。
关于框架
通常网络操作。Json解析。我都会使用框架,这样能够非常好的帮助我处理异常。处理异步操作。可是数据库操作我则使用自带的SQLiteHelper和ContentProvider。这样android系统在SQLite上为我们提供的一层封装。因此,我不再使用第三方的SQLite框架。SQLiteDatabase和ContentProvider为我们提供一下函数
|
|
能够看到。android为我们提供的操作已经被封装了,非常多地方和别的ORM框架也是有一些类似的。并且在android中我们通常不会存储非常复杂的数据结构,不是必需给自己学习框架添加成本。
数据库建库升级等原则
先看一段代码
|
|
以上代码是摘自android 中的DownloadProvider的DatabaseHelper代码。我在这里主要是像推荐这样的数据库的建表,最初接触这样的建表方式是在曾经阅读DownloadManager的时候发现,发现android中这样的设计真的是很精妙。这样的方式。方便数据库的升级,在update数据库和create数据库的时候。能够共用建表,改动数据表的代码,同一时候能够清晰看到数据库的变化。
同一时候建议,在改动数据库版本号的时候。在版本号号上面添加凝视。写上数据库升级的内容,方便自己以后看到数据库的变化。以及其它人在看代码时候。了解到数据库的变化。
数据库建表和数据存储建议
一些简单的配置文件,不建议存到数据库,存到sharepreference中。方便存取,同一时候也提高訪问速度。
文件。图片等绝对不要存到数据库,存储文件路径到数据库中就可以。
一些非常复杂的数据,建议直接转成json存到数据库就可以。
一些缓存也能够这样存储。
其它要说的
数据库操作时候,不要在主线程操作。这是耗时操作,easy造成ANR.
在进行数据库中的数据显示时候。建议配合CursorLoader使用。这是android提供的异步数据载入。同一时候会在数据变化时候,自己主动又一次刷新数据。
其它。本文。本人乱扯。
如有你有异议,欢迎回复讨论。
原文地址:http://blog.isming.me/2014/10/13/good-database-use/,转载请注明出处。
Android中个人推崇的数据库使用方式的更多相关文章
- android中解析文件的三种方式
android中解析文件的三种方式 好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...
- Android中得到布局文件对象有三种方式
Android中得到布局文件对象有三种方式 第一种,通过Activity对象 View view = Activity对象.getLayoutInflater().inflater(R.layout. ...
- Android中的5种数据存储方式
本文转自 http://hi.baidu.com/maguowei/blog/item/7aca46c25574a33ae5dd3ba4.htmlAndroid数据存储Android提供了5种方式存 ...
- Android中通过导入静态数据库来提高应用第一次的启动速度
一个Android应用给用户的第一印象非常重要,除了要有好的创意和美观的界面,性能也是很关键的部分,本文讨论的就是第一次启动的速度问题. Android应用的启动过程不能让用户等待太长时间,个人觉得最 ...
- 在Android中通过导入静态数据库来提高应用第一次的启动速度
一个Android应用给用户的第一印象非常重要,除了要有好的创意和美观的界面,性能也是很关键的部分,本文讨论的就是第一次启动的速度问题. Android应用的启动过程不能让用户等待太长时间,个人觉得最 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中的三种XML解析方式
在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式.下面就对三种解析 ...
- Android中实现定时器的四种方式
第一种方式利用Timer和TimerTask 1.继承关系 java.util.Timer 基本方法 schedule 例如: timer.schedule(task, delay,period); ...
- Android中播放音乐的几种方式
前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalyer 部分使用RxJava编写一点逻辑 ...
随机推荐
- 二分+贪心 || CodeForces 551C GukiZ hates Boxes
N堆石头排成一列,每堆有Ai个石子.有M个学生来将所有石头搬走.一开始所有学生都在原点, 每秒钟每个学生都可以在原地搬走一块石头,或者向前移动一格距离,求搬走所有石头的最短时间. *解法:二分答案x( ...
- Vue之computed与watch的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux(Ubuntu/Centos) iproute 路由IP地址等命令集合,查看端口链接
原 linux(Ubuntu/Centos) iproute 路由IP地址等命令集合,查看端口链接 2017年03月20日 16:55:57 风来了- 阅读数:2291 标签: centoslinux ...
- day09 10 11 12 三天函数内容
小括号.中括号名字()函数调用符[] 索引调用符 函数的注释:官方推荐: 查看注释 :funcming.__doc__ funcming.__name__ def func(name, ag ...
- Jenkins中部署Sonar代码检查
1 安装并启动sonarqube docker pull sonarqube:7.5-community docker run \ --name sonarqube \ --network ci \ ...
- Angular 1.x 框架原理
指令生命周期 compile阶段 对dom进行编译,首先(如果有的话)对template进行应用(这个过程只执行一次).然后把当前指令(内部的指令还没被渲染)传递给iElement,接着执行compi ...
- git 知识(转)
转自:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html Workspace:工作区 Index / Stage:暂存区 Repos ...
- MySQL账户管理和主从同步
账户管理 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定 的操作权限,然后连接进行操作,主要的操作就是数据的CRUD(增删改查) MySQL账户体系:根 ...
- 在ubuntu18.04版本安装vscode
方式一:图形安装 1. 在ubuntu桌面找到应用中心 2. 在软件中心中,搜索Visual Studio Code 3. 在页面中就可以直接选择安装 方式二:命令安装 1. 从vscode官网下载最 ...
- Redis 主从复制与哨兵
Redis 可以使用从属服务器来实现读写分离提高吞吐量或在主服务器故障时接替主服务器以提高可用性. 每个 Redis 服务器实例都可以配置多个 slave 节点,slave 服务器也可以拥有次级 sl ...