Android数据存储:Preferences与SQLite详解
需积分: 0 137 浏览量
更新于2024-09-20
收藏 268KB PDF 举报
"Android数据存储包括三种主要方式:Preferences机制、SQLite数据库存储以及Content Provider。这些方法都是Android应用开发中常用的数据持久化手段,用于在应用运行期间保存和恢复数据。
Preferences机制是一种轻量级的数据存储方式,适用于保存原始数据类型的名值对,如布尔值、整数、浮点数、字符串等。它常被用来存储应用程序的配置信息。使用SharedPreferences进行数据保存时,首先通过`Context.getSharedPreferences()`获取SharedPreferences对象,然后调用`edit()`方法获取Editor对象,通过Editor对象设置键值对,最后使用`commit()`方法提交更改。
例如,以下代码展示了如何使用SharedPreferences保存两个字符串:
```java
SharedPreferences settings = getSharedPreferences("info", MODE_PRIVATE);
Editor editor = settings.edit();
editor.putString("name", nameEditText.getText().toString());
editor.putString("pwd", passwordEditText.getText().toString());
editor.commit();
```
这将把`nameEditText`和`passwordEditText`中的文本值保存到名为"info"的SharedPreferences文件中。
SQLite数据库存储是另一种常见的数据存储方法,Android提供了SQLite数据库的API,允许开发者新建和操作SQLite数据库。每个应用的数据库都是私有的,其数据文件存储在设备的特定路径下,如`/data/data/package_name/databases/my.db`。SQLite数据库的创建和管理通常通过`SQLiteOpenHelper`抽象类的子类实现。开发者需要重写`onCreate()`方法来初始化数据库,`onUpgrade()`方法来处理数据库版本升级,还可以选择实现`onOpen()`方法。
例如,创建一个SQLiteOpenHelper的子类并定义数据库操作:
```java
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "my.db";
public static final String TABLE_NAME = "user_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "NAME";
public static final String COL_3 = "PASSWORD";
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,PASSWORD TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
```
在这个例子中,我们创建了一个名为"my.db"的数据库,其中包含一个表"user_table",有ID、NAME和PASSWORD三个字段。当数据库首次创建时,`onCreate()`方法会被调用,创建表结构。如果数据库版本发生变化,`onUpgrade()`方法会删除旧表并重新创建。
Content Provider是Android系统提供的一个接口,用于不同应用程序间共享数据。虽然这里没有详细展开,但Content Provider是Android四大组件之一,它可以封装数据存储方式(如SQLite数据库或文件系统),并提供统一的访问接口,使得其他应用可以通过URI方式访问和操作数据。
总结来说,Android的Preferences机制适合保存简单的配置信息,SQLite数据库则适用于存储结构化的复杂数据,而Content Provider则用于跨应用的数据共享。开发者应根据具体需求选择合适的数据存储方式。"
2011-06-05 上传
2011-08-11 上传
2021-10-11 上传
2021-09-30 上传
2022-09-20 上传
2022-07-15 上传
2021-05-09 上传
2022-09-20 上传
2022-09-24 上传
mips8888
- 粉丝: 0
- 资源: 5
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析