Как правильно извлекать данные из локальной базы данных Android? - PullRequest
0 голосов
/ 14 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Самый простой способ использовать Room - с LiveData API и Lifecycle API, вы можете проверить ссылку , и я рекомендую вам посмотреть другие кодовые метки Google, они мне очень помогли

0 голосов
/ 14 декабря 2018

В вашем случае доступ к базе данных должен выглядеть примерно так

 Thread{
        val text = dataBase.getDao().getText()
        Handler(Looper.getMainLooper()).post {
            textView.text = text
        }
    }.start()

Но при использовании LiveData или RxJava2 это можно сделать более удобным. Попробуйте это LiveData , RxJava2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...