0
votes

Accès à la chambre DB sur le fil principal

J'utilise la chambre dB dans mon application et mon code ressemble à ceci -

Ceci est mon code de repo - xxx

Ceci est mon code DAO - xxx

ceci fonctionne.

Toutefois, lorsque je supprimai Suspend Le mot clé " xxx

Totalement bien parce que j'essaie d'accéder à la chambre dB sur le fil principal.

mais ma question est, avec suspendre et sans faire le commutateur de thread. . withContext (Dispatchers.default) , comment ça marche? La chambre DB effectue-t-elle toutes ses opérations sur le thread de travailleur?


3 commentaires

Si vous souhaitez que les questions soient exécutées sur le fil principal, ajoutez .AlliceMainThreadQueries () Tout en bâtiment de la base de données room.databasebuilder (this, myappDatabase :: class.java, "myappdatabase"). Autorisermainthreadqueries (). Construire () mais ce n'est pas recommandé. La place n'est donc pas juste limitée au fil de travailleurs


Puis-je vous demander pourquoi vous voulez utiliser votre DB le fil principal?


N'utilisez pas la transaction dB sur le fil principal


3 Réponses :


0
votes

Vous devez définir allowMainThreadqueries () au moment de la création d'une instance de classe de chambre xxx



0
votes

Vous pouvez essayer xxx

ou xxx


0 commentaires

0
votes

Oui, lorsque vous marquez la fonction sous forme de suspension, la salle exécute la requête dans un fil de fond / travailleur puis reprend la coroutine appelante avec les résultats (ou exception) lorsqu'il est fait. Ce qui signifie que vous n'avez pas besoin de faire des trucs comme withContext (Dispatchers.io) {} et vous pouvez simplement appeler la fonction directement.


0 commentaires