Android 房间没有正确删除缓存

标签 android kotlin android-room

我有一个 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/

相关文章:

android - 如何在谷歌纸板应用程序中添加全景图像?

gradle - 将嵌套闭包调用委托(delegate)给相应的类

Kotlin:无法调用表达式,因为找不到函数 invoke()

java - 不兼容的类型 : MainActivity cannot be converted to LifecycleOwner

android - android中的房间数据库无法解析 'android.arch.persistence.room:runtime:1.0.0'

android - 使用 Windows 操作系统运行 appium 脚本时出现套接字挂起错误

android - 如何从AndroidManifest.xml中获取大量元数据标签

java - Android Force 在 io.realm 库上使用 ARMv7

android - Kotlin Android 启动新 Activity

android - 如何从 Android MVVM 架构中的 LiveData 列表中获取第一个或(任何)元素?