Комната без живойAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Комната без живой

Сообщение Anonymous »

Я экспериментирую с базой данных Room . Я не хочу, чтобы мои данные наблюдали, я просто хочу извлечь данные из базы данных один раз . Как достичь этого с помощью mvvm? В основном потоке, поскольку он может потенциально заблокировать пользовательский интерфейс в течение длительного периода времени (как и ожидалось) и если я использую Asynctask , метод возвращает NULL List , когда метод возвращает перед Asynctask полный. < /p>

class: < /p>

@Query("SELECT * FROM student_table where StudentName = :studentName")List getStudentWithSameName(String studentName);
< /code>

Repository: < /p>

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

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

StudentDao studentDao;

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

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

@Override
protected void onPostExecute(List students) {
studentsWithSameName = students;
super.onPostExecute(students);
}
}
< /code>

viewmodel: < /p>

public List getStudentWithSameName(String studentName) {
studentsWithSameName = studentRepository.getAllStudentWithSameName(studentName);
return studentsWithSameName;
}
< /code>

mainActivity: < /p>

viewModel = ViewModelProviders.of(this).get(StudentViewModel.class);
List students = viewModel.getStudentWithSameName("Bill");


Подробнее здесь: https://stackoverflow.com/questions/547 ... t-livedata
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»