小编Shi*_*vam的帖子

没有 LiveData 的房间

我正在试验Room数据库。我不希望我的数据被观察到,我只想从数据库中获取一次数据。如何使用 MVVM 实现这一目标?

我面临的问题:如果我尝试在没有数据的情况下获取数据AsyncTask:无法访问主线程上的数据库,因为它可能会长时间锁定 UI(如预期),如果我使用AsyncTask,该方法返回 nullList作为方法在AsyncTask完成之前返回。

道类:

@Query("SELECT * FROM student_table where StudentName = :studentName")List<Student> getStudentWithSameName(String studentName);
Run Code Online (Sandbox Code Playgroud)

存储库:

public List<Student> getAllStudentWithSameName(String studentName) {
    new GetAllStudentWithSameNameAsyncTask(studentDao).execute(studentName);
    return studentsWithSameName;
}



private class GetAllStudentWithSameNameAsyncTask extends AsyncTask< String,Void, List<Student> > {

    StudentDao studentDao;

    public GetAllStudentWithSameNameAsyncTask(StudentDao studentDao) {
        this.studentDao = studentDao;
    }

    @Override
    protected List<Student> doInBackground(String... strings) {
        List<Student> students = studentDao.getStudentWithSameName(strings[0]);
        return students;
    }

    @Override
    protected void onPostExecute(List<Student> students) {
        studentsWithSameName = …
Run Code Online (Sandbox Code Playgroud)

android android-room android-livedata

14
推荐指数
1
解决办法
3603
查看次数

标签 统计

android ×1

android-livedata ×1

android-room ×1