Android 房间刀很慢-安卓

Android 房间刀很慢-安卓,android,android-room,dao,Android,Android Room,Dao,我在项目中使用Room,但当我使用insert或update时速度很慢 Select的我的代码是(DialogFragment): 我的存储库是: class AppRepository private constructor(context: Context) { private val appDatabase: AppDatabase? = AppDatabase.getInstance(context) companion object { private

我在项目中使用
Room
,但当我使用
insert
update
时速度很慢

Select
的我的代码是(
DialogFragment
):

我的
存储库是:

class AppRepository private constructor(context: Context) {
    private val appDatabase: AppDatabase? = AppDatabase.getInstance(context)

    companion object {
        private var ourInstance: AppRepository? = null
        fun getInstance(context: Context): AppRepository? {
            if (ourInstance == null) {
                ourInstance = AppRepository(context)
            }
            return ourInstance
        }
    }
 //region Langs List Dialog
    fun selectLangsAppRepo(): LiveData<List<Language?>?>? {
        return if (this.appDatabase?.coursesDao() != null) {
            appDatabase.langsListDao()!!.langsDB()
        } else {
            null
        }
    }

    fun updateCheckedAppRepo(id_language: Int?, id: Int?, symbol: String?, isSelected: Boolean){
        if (this.appDatabase?.coursesDao() != null) {
            this.appDatabase.langsListDao()!!.updateChecked(id_language, id, symbol, isSelected)
        }
    }
    //endregion

}
@Dao
interface LangsListDao {
    @Query("SELECT * FROM Language")
    fun langsDB(): LiveData<List<Language?>?>?

    @Query("UPDATE Language SET isSelectedLan = :isSelected WHERE id_language = :id_language AND id = :id AND symbol = :symbol")
    fun updateChecked(id_language: Int?, id: Int?, symbol: String?, isSelected: Boolean)
}

您的
fetchLangsModel()
相当奇怪。您创建了一个一次性的
执行器
,要求它在后台线程上执行某些操作。。。然后立即阻塞,等待线程完成。使用
fun fetchLangsModel():LiveData更简单、更快、更正确appropository。选择langsapprepo()
。除此之外,我们无法在没有看到刀的情况下帮助您使用刀。此外,如果您的代码没有显示任何插入和更新,我们将无法帮助您解决插入和更新速度慢的问题。@commonware。我编辑了我的问题。请确保为您的
UPDATE
语句的
WHERE
子句设置了适当的索引。您能给我一个示例吗。
class AppRepository private constructor(context: Context) {
    private val appDatabase: AppDatabase? = AppDatabase.getInstance(context)

    companion object {
        private var ourInstance: AppRepository? = null
        fun getInstance(context: Context): AppRepository? {
            if (ourInstance == null) {
                ourInstance = AppRepository(context)
            }
            return ourInstance
        }
    }
 //region Langs List Dialog
    fun selectLangsAppRepo(): LiveData<List<Language?>?>? {
        return if (this.appDatabase?.coursesDao() != null) {
            appDatabase.langsListDao()!!.langsDB()
        } else {
            null
        }
    }

    fun updateCheckedAppRepo(id_language: Int?, id: Int?, symbol: String?, isSelected: Boolean){
        if (this.appDatabase?.coursesDao() != null) {
            this.appDatabase.langsListDao()!!.updateChecked(id_language, id, symbol, isSelected)
        }
    }
    //endregion

}
@Dao
interface LangsListDao {
    @Query("SELECT * FROM Language")
    fun langsDB(): LiveData<List<Language?>?>?

    @Query("UPDATE Language SET isSelectedLan = :isSelected WHERE id_language = :id_language AND id = :id AND symbol = :symbol")
    fun updateChecked(id_language: Int?, id: Int?, symbol: String?, isSelected: Boolean)
}