Это мой первый раз, когда я занимаюсь разработкой Android.Извините за отсутствие знаний в ... обо всем.
Я пытаюсь запросить некоторые данные в главном потоке деятельности, используя asynctask.Проблема в том, что запрашиваемые мною данные нужны немедленно в каком-то другом запросе данных, поэтому асинхронный характер запроса означает, что каждый раз, когда мне нужно использовать данные, поток еще не запрашивал их и выдает исключение нулевого указателя.Есть ли способ синхронно запрашивать данные из базы данных комнаты?
Я пробовал функцию getValue () из объекта LiveData, но он также всегда возвращает ноль.Я уверен, что данные правильно вставлены в базу данных, я проверял несколько раз, просматривая базу данных во время отладки.
Это код, который я использовал для запроса сущности класса Day:
//load current day
findSpecificDayAsyncTask asyncTask = (findSpecificDayAsyncTask) new findSpecificDayAsyncTask(mDayDao, new findSpecificDayAsyncTask.AsyncResponse() {
@Override
public void processFinish(Day output) {
day1 = output;
}
}).execute(date);
Это работает своевременно, но мне нужны данные немедленно, чтобы я мог запросить некоторые другие данные:
mBPViewModel = ViewModelProviders.of(this).get(BulletPointViewModel.class);
//the day1 class is used here as a parameter
mBPViewModel.getSpecificDayBulletPoints(day1.day).observe(this, new Observer<List<BulletPoint>>() {
@Override
public void onChanged(@Nullable final List<BulletPoint> bulletPoints) {
// Update the cached copy of the words in the adapter.
mAdapter.setBulletPoints(bulletPoints);
}
});
Так есть ли способ для меня синхронно запрашивать данные, чтобы я неполучить исключение нулевого указателя?