serrure Android ContentProvider
-
26-10-2019 - |
Question
Dois-je utiliser un ReadWriteLock sur les fonctions du ContentProvider?
Dans la requête du ContentProvider je getReadableDatabase, puis vérifier si son ouverture et faire la requête. Mais parfois, il se bloque sur DatabaseIsClosed exeption. Cela pourrait être un autre procédé que fait un insert qui fait un getWritebleDatabase qui ferme le premier.
J'utilise une application et un service qui demande et insertion sur le ContentProvider constamment. Il semble donc que le ContentProvider n'est pas threadsafe.
pourrait-il aider à faire la fonction de synchronisation?
Merci!
La solution
Dans la requête du ContentProvider je getReadableDatabase, puis vérifier si son ouverture et faire la requête. Mais parfois, il se bloque sur DatabaseIsClosed exeption. Cela pourrait être un autre procédé que fait un insert qui fait un getWritebleDatabase qui ferme le premier.
Vous devriez garder votre ouverture base de données pour la durée de vie du ContentProvider
, autant que je sache.
Il semble donc que le ContentProvider n'est pas threadsafe.
AFAIK, un ContentProvider
est jamais appelée sur un fil.
ContentProvider
est la plupart du temps une façade et ne fournit aucune sécurité intrinsèque fil.