Страница 1 из 1

Запись в бд из нескольких потоков

Добавлено: 19 сен 2014, 11:17
razmus
Здравствуйте!
Столкнулся с такой проблемой, в приложении есть бд. Когда мне нужно записать или прочитать данные, я открываю подключение, делаю что-то и закрываю подключение. Понадобилось реализовать сервис который будет каждые 5 сек, писать "некие" данные в бд. Возникла проблема с одновременным доступом, то есть сервис что-то пишет в бд, и в это время бд нужна и приложению. Поможет ли реализация ContentProvider в приложении для решения этого вопроса, или же нужно как-то реализовать очередь доступа к базе, если да то как это делается? Где можно про это почитать, так как мне найти не удалось, может искал не правильно. Или может для сервиса нужно отдельно сделать свою базу данных и когда нужны данные то просто обращаться к сервису за данными?

Заранее благодарен!

З.Ы.
В приложении 2-е базы данных... Есть ли сложности написания ContentProvider в таком случает? Насколько я понимаю два хелпера и флаг для понимания с какой базой работать, но что-то мне подсказывает, что граблей там еще много...

Re: Запись в бд из нескольких потоков

Добавлено: 19 сен 2014, 12:07
razmus
З.Ы.Ы.
Или, может, выше написанное не правильный подход к решению "задачи"?

Re: Запись в бд из нескольких потоков

Добавлено: 19 сен 2014, 13:09
KamiSempai
Контент провайдеры были сделаны как раз для работы из нескольких потоков.

Re: Запись в бд из нескольких потоков

Добавлено: 19 сен 2014, 13:38
razmus
KamiSempai писал(а):Контент провайдеры были сделаны как раз для работы из нескольких потоков.
Спасибо. А не будет ли проблем с попыткой одновременной записи в бд, и тем что у меня 2-е бд? Дело в том, что переписать приложение под контент провайдер будет довольно трудоемкой задачей, не хочется наткнуться на "большие грабли".

Re: Запись в бд из нескольких потоков

Добавлено: 19 сен 2014, 15:12
altwin

Re: Запись в бд из нескольких потоков

Добавлено: 19 сен 2014, 17:54
Foenix
На самом деле база нужна одна, а не две. Под контент провайдер переписать на самом деле не сложно, сложно вначале в нем разобраться.

Re: Запись в бд из нескольких потоков

Добавлено: 20 сен 2014, 10:45
altwin
Foenix писал(а):На самом деле база нужна одна, а не две. Под контент провайдер переписать на самом деле не сложно, сложно вначале в нем разобраться.
а зачем? :) Каждый раз разбираться в чужом коде после апдейтов sdk, если можно один раз написать правильно самому... :P

Re: Запись в бд из нескольких потоков

Добавлено: 20 сен 2014, 11:54
Foenix
на другой волне. Какой еще чужой код?

Re: Запись в бд из нескольких потоков

Добавлено: 20 сен 2014, 12:26
altwin
Foenix писал(а):на другой волне. Какой еще чужой код?
контент провайдер нам дали готовый. чужой - это гугла. :P

Re: Запись в бд из нескольких потоков

Добавлено: 01 окт 2014, 15:37
razmus
Foenix писал(а):На самом деле база нужна одна, а не две. Под контент провайдер переписать на самом деле не сложно, сложно вначале в нем разобраться.
В моем случае лучше 2-е использовать, а не одну с таблицами из двоих бд, меньше проблем. По крайней мере так казалось по началу.