android - Room - when to initialize database and how to access it through app lifecycle -


i'm trying set room way simplify access sqlite database. i've written code, can't run it, app throws following exception:

cannot access database on main thread since may potentially lock ui long period of time

i've done research , i've found .allowmainthreadqueries() in databasebuilder seems me terrible solution, because it's muting error message, not fixing real cause.

so, best practices? when (in app lifecycle) should create database , should store access activity want?

when (in app lifecycle) should create database

lazy-create roomdatabase on first access, when using sqliteopenhelper directly.

where should store it

a singleton typical pattern, when using sqliteopenhelper directly.

neither of questions have error message. matter of accessing database on background thread, when using sqliteopenhelper directly. @query methods, have option of having method return livedata or rxjava type (e.g., flowable), in case room take care of doing work on background thread. other operations (e.g., @insert), responsible invoking methods on background thread (thread, asynctask, threadpoolexecutor, intentservice, jobintentservice, etc.).


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -