Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Room数据库函数需要在android中返回值时,如何在线程中调用该函数_Android_Android Room - Fatal编程技术网

当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不推荐使用。在文档中,它说它已被弃用