Как работать с sqlite из нескольких потоков в Android?

Здравствуйте уважаемые хабражители.

Пишу уже от безвыходности.

Разрабатываю приложение, которое записывает данные в базу в нескольких потоках.

Когда присоединяется второй вюпоток на запись или чтение, то вылетает ошибка что какой то курсор небыл закрыт.

Подскажите пожалуйста как правильно работать с sqlite в android именно несколькими потоками.

Может быть у кого то есть опыт обхода этой проблемы


Буду весьма благодарен за любую помощь.


P.S. Принцип работы sqlite знаю, и знаю что открываясь на запись файл блокируется, интересует как создать очередь или что то в этом роде
  • Вопрос задан
  • 4521 просмотр
Решения вопроса 1
Сделайте себе класс xxxApplication extends Application, пропишите его в манифесте.
И в нём сделайте одно подключение к базе данных. Класс Application в андроид программе только один, поэтому там все переменные как singleton.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Я не большой знаток Android, но мне кажется вам стоит почитать про синхронизацию потоков и POSIX.
Ответ написан
Комментировать
m08pvv
@m08pvv
А сколько потоков планируется? Может лучше сделать поток, который работает с базой, а к нему обращаются остальные?
Ответ написан
m08pvv
@m08pvv
Обсуждение на stackowerflow
Ответ написан
@gleb_kudr
Я бы сделал адаптер, который засасывает в себя данные из разных потоков и организует очередь. И общение с БД вел бы только посредством этого адаптера.
Ответ написан
ilichme
@ilichme
В андроиде базу можно открыть либо из нескольких потоков на чтение, либо из одного на запись. Сэд бат тру
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы