Android ContentProvider Lock
-
26-10-2019 - |
Вопрос
Должен ли я использовать readwritelock на функциях ContentProvider?
В запросе ContentProvider я делаю getReadabledAtabase, затем проверьте, открыт ли он и сделайте запрос. Но иногда он сбои в базе данных, представленной на экспозиции. Это может случиться так, что другой процесс выполняет вставку, которая выполняет getWriteBledatabase, которая закрывает первый.
Я использую приложение и сервис, который постоянно запрашиваю и вставляю ContentProvider. Таким образом, кажется, что ContentProvider не ThreadSafe.
Может ли это помочь сделать функцию синхронизироваться?
Спасибо!
Решение
В запросе ContentProvider я делаю getReadabledAtabase, затем проверьте, открыт ли он и сделайте запрос. Но иногда он сбои в базе данных, представленной на экспозиции. Это может случиться так, что другой процесс выполняет вставку, которая выполняет getWriteBledatabase, которая закрывает первый.
Вы должны держать свою базу данных открытой для жизни ContentProvider
, НАСКОЛЬКО МНЕ ИЗВЕСТНО.
Таким образом, кажется, что ContentProvider не ThreadSafe.
Afaik, а ContentProvider
вызывает только одну ветку.
ContentProvider
в основном фасад и не обеспечивает никакой внутренней безопасности нити.