Android Persistent Storage 是指在 Android 设备上永久存储数据的能力。这可以通过多种方式实现,包括使用 SharedPreferences、文件存储(Internal Storage 和 External Storage)以及数据库(如 SQLite 数据库)。下面是一些实现 Android Persistent Storage 的常见方法:
1. 使用 SharedPreferences
SharedPreferences 是一个轻量级的存储机制,适用于存储少量的键值对数据。
// 获取 SharedPreferences 实例 SharedPreferences sharedPreferences = getSharedPreferences("app_preferences", MODE_PRIVATE); // 存储数据 SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("key", "value"); editor.apply(); // 读取数据 String value = https://www.yisu.com/ask/sharedPreferences.getString("key", "default_value");
2. 使用文件存储(Internal Storage)
Internal Storage 是设备内部的存储空间,适用于存储应用程序的私有文件。
// 获取 Internal Storage 的路径 File internalStorageDir = getFilesDir(); // 创建文件 File file = new File(internalStorageDir, "example.txt"); try { FileOutputStream fos = new FileOutputStream(file); fos.write("Hello, World!".getBytes()); fos.close(); } catch (IOException e) { e.printStackTrace(); } // 读取文件 FileInputStream fis = new FileInputStream(file); byte[] buffer = new byte[(int) file.length()]; fis.read(buffer); fis.close(); String content = new String(buffer, StandardCharsets.UTF_8);
3. 使用文件存储(External Storage)
External Storage 是设备外部的存储空间,适用于存储应用程序的公共文件。
// 检查外部存储是否可用 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // 获取 External Storage 的路径 File externalStorageDir = Environment.getExternalStorageDirectory(); // 创建文件 File file = new File(externalStorageDir, "example.txt"); try { FileOutputStream fos = new FileOutputStream(file); fos.write("Hello, World!".getBytes()); fos.close(); } catch (IOException e) { e.printStackTrace(); } // 读取文件 FileInputStream fis = new FileInputStream(file); byte[] buffer = new byte[(int) file.length()]; fis.read(buffer); fis.close(); String content = new String(buffer, StandardCharsets.UTF_8); }
4. 使用 SQLite 数据库
SQLite 是一个轻量级的数据库引擎,适用于存储结构化数据。
// 创建 SQLiteOpenHelper 实例 SQLiteOpenHelper dbHelper = new SQLiteOpenHelper(this, "example_db", null, 1) { @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE example_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS example_table"); onCreate(db); } }; // 获取 SQLiteDatabase 实例 SQLiteDatabase db = dbHelper.getWritableDatabase(); // 插入数据 ContentValues contentValues = new ContentValues(); contentValues.put("name", "John Doe"); db.insert("example_table", null, contentValues); // 查询数据 Cursor cursor = db.query("example_table", new String[]{"name"}, null, null, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(0); Log.d("Example", "Name: " + name); } // 关闭数据库 cursor.close(); db.close(); dbHelper.close();
通过这些方法,你可以在 Android 设备上实现数据的持久化存储。选择哪种方法取决于你的具体需求,例如数据类型、存储空间和访问频率等。