Блокировка контента Android-провайдера - PullRequest
2 голосов
/ 06 сентября 2011

Должен ли я использовать ReadWriteLock для функций контент-провайдера?

В запросе контент-провайдера я делаю getReadableDatabase, затем проверяю, открыт ли он, и делаю запрос.Но иногда происходит сбой при исключении DatabaseIsClosed.Это может быть связано с тем, что другой процесс выполняет вставку, которая выполняет getWritebleDatabase, которая закрывает первую.

Я использую приложение и службу, которые постоянно запрашивают и вставляют в контент-провайдера.Поэтому кажется, что контент-провайдер не безопасен для потоков.

Может ли это помочь синхронизировать функцию?

Спасибо!

1 Ответ

1 голос
/ 06 сентября 2011

В запросе контент-провайдера я делаю getReadableDatabase, затем проверяю, открыта ли она, и делаю запрос.Но иногда происходит сбой при исключении DatabaseIsClosed.Это может быть связано с тем, что другой процесс выполняет вставку, которая выполняет getWritebleDatabase, которая закрывает первую.

Вы должны держать базу данных открытой в течение всего времени жизни ContentProvider, AFAIK.

Похоже, что контент-провайдер не является поточно-ориентированным.

AFAIK, ContentProvider вызывается только в одном потоке.

ContentProvider в основном фасад и не обеспечивает никакой внутренней безопасности резьбы.

...