Я занимаюсь разработкой приложения, и у меня есть локальная база данных SQLite для хранения некоторых пользовательских данных, и я также использую библиотеку постоянства Room, поскольку это рекомендуемый подход.Я последовал этому уроку и создал модель, DAO и саму базу данных.Таким образом, в упражнении я просто заполняю свой RecyclerView
, используя новый поток, и он работает нормально.
Но затем у меня возникла проблема в другом представлении, где я хочу изменить текст TextView
на значение, полученное избаза данных.Я не могу сделать это в другом потоке, как раньше, потому что я получаю CalledFromWrongThreadException
, и я также не могу вызвать его из основного потока, потому что я получаю IllegalStateException
.Все учебники, которые я нашел, просто предоставили мне информацию, которую я уже знал о создании базы данных и DAO, и все они использовали allowMainThreadQueries()
с пометкой, что его не следует использовать в производстве.Тем не менее, больше исследований, связанных с проблемами, привело меня к некоторым обходным путям, использующим runOnUiThread()
, который на самом деле не является решением.Поэтому у меня возник вопрос:
Есть ли какой-то простой подход, который я пропустил? (Или, может быть, не такой простой, но рациональный).