当Room数据库函数需要在android中返回值时,如何在线程中调用该函数
我已经创建了一个房间数据库,我正在尝试实现以下功能当Room数据库函数需要在android中返回值时,如何在线程中调用该函数,android,android-room,Android,Android Room,我已经创建了一个房间数据库,我正在尝试实现以下功能 public int getRowCountSenderHelper() { return senderHelperDao.checkRowCount(); } public SenderHelper getOneChat() { return senderHelperDao.getOneChat(); } 现在android给了我这个错误 java.lang.Ill
public int getRowCountSenderHelper()
{
return senderHelperDao.checkRowCount();
}
public SenderHelper getOneChat()
{
return senderHelperDao.getOneChat();
}
现在android给了我这个错误
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
现在我不能使用AsyncTask,因为它们已被弃用,我不能在线程中调用senderHelper.getOneChat()
和senderHelperDao.checkRowCount()
,因为它需要返回一个值,我担心当新线程在后台工作时,主线程可能会返回空值
任何解决此问题的方法都将受到欢迎1-定义LiveData类型的变量并为其创建getter方法 2-返回该变量
3-使用getter从您的活动中获取LiveData的值。可以找到一些有用的解决方法。可能重复:这是否回答了您的问题@麦克斯:不,问题的性质不同。当我的查询有其他问题时,您建议询问的关于查询不工作的问题。@live love asyncTask不推荐使用。在文档中,它说它已被弃用