Android数据存储:Preferences与SQLite详解

需积分: 0 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则用于跨应用的数据共享。开发者应根据具体需求选择合适的数据存储方式。"