在Room操作数据库时,有时需要等待插入操作完成才能继续执行下一步操作。可以使用异步操作来实现此目的。下面是一个示例:
@Dao
public interface UserDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertUser(User user);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertUsers(List users);
@Query("SELECT * FROM User")
LiveData> getAllUsers();
}
// 在Activity或Fragment中调用
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
new Thread(new Runnable() {
@Override
public void run() {
// 等待插入操作完成
db.userDao().insertUser(user);
db.userDao().insertUsers(users);
// 执行其他操作
...
}
}).start();