Параллелизм Android sqlite без исключений

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

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

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

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

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

11
задан Kevin Galligan 31 August 2010 в 14:46
поделиться

1 ответ

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

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

17
ответ дан 3 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: