Intereting Posts
Использование датчика ориентации для указания на конкретное местоположение Как связать как Mousedown, так и Touchstart, но не реагировать на оба? Android, JQuery RxJava, выполнить код в потоке наблюдателя, прежде чем связывать два наблюдаемых SMS_RECEIVED не работает над сэндвичем с мороженым? Библиотека Picasso не загружает изображения с SD-карты на Android В чем разница между панелью действий и tabhost / tabactivity Как получить имя изображения из ресурса в Android? Как вызвать метод класса, хранящегося под другим пакетом Установка splitActionBarWhenNarrow из Java на Android Android SDK не найден. Убедитесь, что он установлен. Если он не находится по умолчанию, установите переменную среды ANDROID_HOME Панель прогресса Android, встроенная в ui, а не в диалоговом окне Как отлаживать собственный родной lib Android в eclipse с ARM DS-5 без сумасшедшего? Как правильно изменить существующее имя проекта в Android Studio? Android, есть ли способ отключить запись внутри выбора даты с помощью клавиатуры? Приложение Android рушится из-за V / GoogleSignatureVerifier: подпись не действительна

Безлимитный параллелизм SQL sqlite

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

Под «procs» я имею в виду другие потоки в одном приложении.

Есть ли стандартный способ, чтобы другие потоки просто подождали, пока база данных снова будет доступна, возможно с указанным таймаутом, а не выбрасывает исключение?

Предвосхищая «почему вы так делаете?» Ответы, это именно то, как мы это делаем, и все. Мы также не будем использовать контент-провайдера. Просто попробуйте синхронизировать доступ к db.

Предполагая, что нет стандартного способа сделать это, мы, вероятно, закончим писать обертку вокруг вызовов db, чтобы выполнить некоторую синхронизацию потоков.

Solutions Collecting From Web of "Безлимитный параллелизм SQL sqlite"

Пока вы используете один и тот же объект SQLiteDatabase , синхронизация выполняется для вас.

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

Или вы можете использовать другую базу данных, которая поддерживает ее, например H2 . Я знаю, это может показаться странной идеей. Но, согласно моему первоначальному тесту, он работает хорошо (как на эмуляторе, так и на устройстве) и на самом деле не медленнее. За исключением открытия и закрытия базы данных, которая в настоящее время довольно медленная, около 1 секунды, но это имеет другие причины и, надеюсь, будет исправлено в следующей версии.