转自:http://blog.csdn.net/smartbetter/article/details/51469961
所有应用程序必然有数据的输入输出,Android也是一样的,Android应用程序的参数设置、运行状态数据这些都需要保存到外部存储器上,保证关机后数据不丢失,如下是几种Android常见的数据存储方式:
SharedPreferences:适合保存少量数据(一些配置信息、积分之类);
SQLite:一个真正轻量级数据库,没有后台进程,整个数据库就对应于一个文件,适合大量数据需要存储、访问的情况。
下来详细来看看它们的用法。
1.SharedPreferences
SharedPreferences保存的数据主要是简单类型的key-value对。
1)SharedPreferences接口
主要负责读取应用程序的Preferences数据,提供了如下常见方法来访问SharedPreferences中的key-value对:
boolean contains(String key) // 判断是否包含key对应的数据
abstract Map<String, ?> getAll() // 获取全部key-value对
boolean getXxx(String key, xxx defValue) // 获取指定key的value值
SharedPreferences本身是一个接口,无法创建实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,mode参数支持如下几个值:
Context.MODE_PRIVATE // 私有,只能被本应用程序读写
Context.MODE_WORLD_READABLE // 能被其他应用程序读但不可写
Context.MODE_WORLD_WRITEABLE // 能被其他应用程序读写
2)Editor
SharedPreferences接口本身没有写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即获取Editor对象,Editor提供了如下方法写入数据:
Editor clear() // 清空所有数据
Editor putXxx(String key, xxx value) // 存入指定key-value
Editor remove(String key) // 删除指定key-value
boolean commit() // 编辑完成后提交修改
3)SharedPreferences存储位置
SharedPreferences数据总是以xml格式保存在/data/data/package name/shared prefs目录下
2.SharedPreferences的用法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
读写其他应用的SharedPreferences需要获取其他程序所对应的Context
uContext= createPackageContext("com.gc.other", Context.CONTEXT_IGNORE_SECURITY);
然后使用其他程序的Context获取对应的SharedPreferences实例,然后就可以类似上面进行读写数据了。
SharedPreferences sp = uContext.getSharedPreferences("uconfig",Context.MODE_WORLD_READABLE);
3.SQLite数据库
SQLite是一个嵌入式的数据库引擎,适用于资源有限的设备上适量存取数据(SQLite数据库只是一个文件)。
SQLiteDatabase表示一个数据库(底层是一个数据库文件),Android通过SQLiteDatabase对象来管理、操作数据库。
4.SQLiteDatabaseHelper类
SQLiteDatabaseHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。
一般用法是创建SQLiteDatabaseHelper的子类并扩展它的onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法。
SQLiteDatabaseHelper包含如下常用方法:
getReadableDatabase() // 以读写的方式打开数据库对应的SQLiteDatabase对象
getWritableDatabase() // 以写的方式打开数据库对应的SQLiteDatabase对象
onCreate(SQLiteDatabase db) // 第一次创建回调
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) // 当数据库版本更新时回调
close() // 关闭所有打开的SQLiteDatabase
5.创建SQLite数据库
继承SQLiteOpenHelper,创建UserInfoSqliteOpenHelper数据库帮助类
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
然后就可以在XxxActivity中创建出数据库
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
6.SQLite数据库的增删改查
首先创建用户实体类UserBean
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
接下来将增删改差封装起来,如下UserInfoDB:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
到此我们就可以通过创建UserInfoDB实例,调用该实例的方法来增删改差数据库了