java Room SQLite如何创建SELECT返回1对象?
我找到了很多房间教程,但没有一本能解释这一点
如何运行返回一个对象而不是LiveData的查询
我的房间里有这个方法:
@Dao
public interface TrainingDao {
....
Query("SELECT * FROM " + TABLE_TRAININGS + " WHERE name =:name AND open =:open")
Training fetchTrainingByName(String name, int open);
...
}
如果我在主线程上运行此方法,应用程序将崩溃,错误为“无法访问主线程上的数据库,因为…”
那么,如何在返回一个训练对象的AsyncTask中运行此查询
# 1 楼答案
如https://developer.android.com/training/data-storage/room/accessing-data所述 Room不支持在主线程上访问数据库,除非您调用了
allowMainThreadQueries()
。当你刚回来的时候。您正在主线程上运行因此,您可以
allowMainThreadQueries()
或使用LiveData
包装您的结果,如下所示,或者如果您喜欢RxJava,您甚至可以将其包装为Flowable
或Single
希望有帮助