我有一个 room dao 接口(interface),用于存储学校列表。这是 dao 接口(interface) -
@Dao
interface SchoolDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertSchools(schoolList: List<SchoolModel>)
@Query("SELECT * from schoolTable")
suspend fun querySchoolList(): List<SchoolModel>?
@Query("DELETE from schoolTable")
suspend fun deleteSchoolList()
}
这是我的缓存库-
override suspend fun storeSchool(schoolList: List<SchoolModel>) {
schoolDao.insertSchools(schoolList)
}
override suspend fun deleteCache(): SchoolResult {
schoolDao.deleteSchoolList()
if (schoolDao.querySchoolList().isNullOrEmpty()) {
return SchoolResult.EmptyNow
}
return SchoolResult.NotEmpty
}
override suspend fun getSchoolList(): SchoolResult {
val result = schoolDao.querySchoolList()
if (result != null && result.isNotEmpty()) {
return SchoolResult.SchoolListContent(result)
}
return SchoolResult.Error(SchoolResult.ErrorType.SCHOOL_LIST_EMPTY)
}
问题是当我进行 API 调用时,该调用为我提供了 2 个上课时间,我将其存储起来。 现在我在服务器数据库上删除了一个学校项目,API 给了我 1 个学校项目,这完全没问题。 到现在为止一切都很好。现在,当我在手机上关闭互联网时,我希望从缓存中读取,缓存会给我 2 个项目。 似乎房间缓存没有更新。
最佳答案
看来您提供的源代码没有问题。我认为这里的房间工作正常。您的问题很可能在另一个层面,例如,在调用服务器 api 方法和数据库缓存的顺序中。 绝对不是房间的问题。
关于Android 房间没有正确删除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58854162/