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)
}