数据存储
对象映射:Room 允许将数据库表映射到 Java/Kotlin 对象,从而避免手动编写 SQL 代码。
编译时检查:通过注解处理器,Room 可以在编译时检查 SQL 查询的正确性,减少运行时错误。
支持 LiveData 和 RxJava:Room 可以与 LiveData 和 RxJava 一起使用,实现响应式编程。
事务支持:Room 支持事务,确保数据操作的原子性。
使用示例
添加依赖:
implementation "androidx.room:room-runtime:2.5.0" annotationProcessor "androidx.room:room-compiler:2.5.0" // For Java kapt "androidx.room:room-compiler:2.5.0" // For Kotlin
定义实体类:
@Entity(tableName = "user") public class User { @PrimaryKey @NonNull private String uid; private String name; // Getters and Setters }
定义 DAO(数据访问对象):
@Dao public interface UserDao { @Insert void insert(User user); @Query("SELECT * FROM user WHERE uid = :uid") User getUserById(String uid); }
定义数据库:
@Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }
使用 Room 数据库:
AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build();
2. SharedPreferences
SharedPreferences 是 Android 提供的一种轻量级的数据存储方式,主要用于存储简单的键值对(key-value pairs)。它适用于存储小量的用户设置或应用配置。
主要特点
轻量级:适合存储简单的应用配置或用户偏好设置。
简单易用:使用简单的 API 操作。
异步存储:可以通过异步方法进行存储,以防止阻塞主线程。
使用示例
获取 SharedPreferences 实例:
SharedPreferences sharedPreferences = getSharedPreferences("my_prefs", MODE_PRIVATE);
存储数据:
SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("username", "JohnDoe"); editor.putInt("user_age", 30); editor.apply(); // 或使用 editor.commit() 进行同步存储
读取数据:
String username = sharedPreferences.getString("username", "defaultUser"); int userAge = sharedPreferences.getInt("user_age", 0);
删除数据:
SharedPreferences.Editor editor = sharedPreferences.edit(); editor.remove("username"); editor.apply();
小结
Room 持久化库:适合存储结构化数据(如复杂对象和关系),提供强大的数据库功能和对象映射。
SharedPreferences:适合存储简单的配置和用户设置,使用简单且轻量级。
选择合适的持久化方式可以帮助开发者更高效地管理应用的数据。对于复杂的数据,推荐使用 Room;而对于简单的设置或偏好,则可以使用 SharedPreferences。
Last updated