У меня есть приложение для Android, которое использует Room .Мне нужно проверить количество элементов, вставленных в мою таблицу, поэтому я написал следующий код в моем интерфейсе Dao
@Query("SELECT COUNT(*) FROM notes")
int getCount();
В своем классе репозитория я написал код, подобный приведенному ниже
public int deleteNote(final NoteEntity note) {
final int[] count1 = new int[1];
executor.execute(new Runnable() {
@Override
public void run() {
count1[0] = mDb.schoolDao().getCount();
}
});
return count1[0];
}
Теперь, когда я вызываю вышеупомянутый метод в моем Activity
, я получаю count
как ноль, но когда я заставляю мое приложение работать в основном потоке, т.е. удаляя код Runnable
, тогда он возвращает действительныйcount
.Я знаю, что запуск любого запроса к базе данных в главном потоке не является хорошим вариантом, но я не понимаю, почему я получаю нулевое значение, когда оно выполняется в фоновом потоке.
Просто чтобы было ясно, что данные всегда есть вбаза данных.