Nano Hash - криптовалюты, майнинг, программирование

Доступ к базе данных из разных потоков в Android

У меня есть служба, которая загружает данные из Интернета в AsyncTasks. Он анализирует данные и сохраняет их в БД. Служба работает непрерывно.

Существует изменение, которое Activity пытается прочитать из базы данных, пока Служба записывает в нее.

У меня есть помощник базы данных с несколькими методами записи и чтения. Может ли это вызвать проблемы? Возможно, вы пытаетесь открыть базу данных из двух разных потоков?

04.10.2011

Ответы:


1

было сказано и написано много книг о проблемах параллелизма в db.

Но используя stackoverflow как википедию, я нашел интересную вещь:

Sqlite на Android позволяет вам получать доступ к базе данных из нескольких процессов для чтения, но если вы в настоящее время пишете из одного процесса, чтение и запись из других процессов вызовет исключение, потому что первая запись имеет блокировку в БД.

Тогда база данных хорошо защищена от других потоков. Плохая новость заключается в том, что вы должны управлять этими исключениями , и это может быть грязной работой, если у вас большая база данных (имеется в виду большое количество таблиц с большим объемом обмена данными).

04.10.2011
  • Спасибо! Думаю, это не должно быть большой проблемой. Если служба владеет экземпляром db-helper, а активность — другим. Тогда мне просто нужно сделать try/catch в каждом методе db-helper?! 05.10.2011

  • 2

    Пока вы используете только один экземпляр SQLiteDatabase, все будет в порядке. Просто убедитесь, что ваши транзакции чтения/записи базы данных выполняются только внутри вашего помощника базы данных, а не в других классах. Любые транзакции, совершенные с одним и тем же объектом базы данных, будут автоматически синхронизированы для вас.

    04.10.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..