android studio保存数据的代码
时间: 2025-06-30 18:11:07 浏览: 11
在 Android 应用开发中,数据存储是实现功能完整性和用户体验的重要部分。Android 提供了多种方式用于数据持久化保存,主要包括以下几种方法:
### SharedPreferences 存储
SharedPreferences 是一种轻量级的数据存储机制,适合用于保存简单的键值对数据,例如用户的偏好设置或应用状态信息。
```java
// 获取SharedPreferences对象
SharedPreferences sharedPref = getSharedPreferences("app_data", Context.MODE_PRIVATE);
// 写入数据
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("username", "JohnDoe");
editor.apply();
// 读取数据
String username = sharedPref.getString("username", "default_value");
```
通过这种方式可以快速地将字符串、布尔值、整数等基本类型数据进行存储和读取[^1]。
### 文件存储
文件存储适用于需要以文本或二进制形式保存数据的情况,例如缓存图片或日志文件。Android 支持内部存储和外部存储两种方式。
```java
// 写入文件到内部存储
try {
FileOutputStream fos = openFileOutput("data.txt", Context.MODE_PRIVATE);
fos.write("Hello, Android!".getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
// 从内部存储读取文件
try {
FileInputStream fis = openFileInput("data.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
```
使用文件存储时,需要注意文件路径的权限问题,并根据需求选择合适的存储位置[^2]。
### SQLite 数据库存储
SQLite 是一个嵌入式的数据库解决方案,非常适合需要结构化存储的应用场景,如记账本项目中的收支记录管理。
#### 创建数据库帮助类
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "finance.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE expenses (id INTEGER PRIMARY KEY AUTOINCREMENT, amount REAL, category TEXT, note TEXT, date TEXT)";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS expenses");
onCreate(db);
}
}
```
#### 插入与查询数据
```java
DatabaseHelper dbHelper = new DatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 插入数据
ContentValues values = new ContentValues();
values.put("amount", 100.5);
values.put("category", "餐饮");
values.put("note", "午餐");
values.put("date", "2023-10-01");
long newRowId = db.insert("expenses", null, values);
// 查询数据
Cursor cursor = db.query("expenses", new String[]{"id", "amount", "category"}, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
double amount = cursor.getDouble(cursor.getColumnIndexOrThrow("amount"));
String category = cursor.getString(cursor.getColumnIndexOrThrow("category"));
} while (cursor.moveToNext());
}
cursor.close();
db.close();
```
对于复杂的业务逻辑,例如分类统计或者图表展示,SQLite 提供了强大的 SQL 查询支持,能够满足多样化的需求[^3]。
### ContentProvider 存储
ContentProvider 主要用于不同应用程序之间的数据共享。它提供了一种标准接口,允许访问其他应用的数据资源,例如联系人或媒体文件。
### 网络存储
网络存储适用于需要将数据同步到云端或服务器端的场景。可以通过 HTTP 请求将数据上传至远程服务器,或使用 Firebase 等云服务简化操作。
---
阅读全文
相关推荐


















