Я использую компонент Room Architecture из Android Jet-Pack в своем приложении.Я реализовал класс Repository, где я управляю своими источниками данных, такими как сервер и данные из базы данных Room.Я использую «живые» данные, чтобы получить список всех объектов, присутствующих в моей базе данных, и я прикрепил наблюдателя к своему классу активности.Все работает отлично, за исключением одной вещи, прежде чем звонить на мой сервер. Я хочу проверить, присутствуют ли данные в Room или нет, если данные присутствуют в Room. Я не хочу звонить на сервер, чтобы сэкономить ресурсы, но когда я пытаюсьполучить данные из локальной базы данных в классе репозитория, он всегда возвращает ноль. Я также пытался прикрепить к нему наблюдателя, но безрезультатно.
public LiveData<List<AllbrandsdataClass>> getAllBrands() {
brandsDao.getallbrands().observeForever(new Observer<List<AllbrandsdataClass>>() {
@Override
public void onChanged(@Nullable final List<AllbrandsdataClass> allbrandsdataClasses) {
final List<AllbrandsdataClass> listofbrandsobjectfromdb = allbrandsdataClasses;
if (listofbrandsobjectfromdb == null) {
Log.d(TAG, "Repository getallbrands number of brands in the DB is: 0");
} else {
// perform the logic to check and than fetch from server
}
return brandsDao.getallbrands();
}
}
}
вот мой getAllBrands()
метод в классе интерфейса, который помечен как DAO
@Query("SELECT * FROM AllbrandsdataClass order by timeStamp desc")
LiveData<List<AllbrandsdataClass>> getallbrands();
, что я хочу, чтобы выполнить проверку в классе репозитория для данных из локальногобазы данных перед загрузкой данных с сервера, но я не могу это сделать при использовании оперативных данных, как показано выше