Sqlite на Android позволяет вам получить доступ к базе данных из нескольких процессов для чтения, но если вы в настоящее время пишете из одного процесса, чтение и запись из других процессов вызовет исключение, потому что первая запись имеет блокировку базы данных.
Под «процессами» я подразумеваю другие потоки в том же приложении.
Есть ли стандартный способ, чтобы другие потоки просто ждали, пока база данных снова станет доступной, возможно, с указанным тайм-аутом, вместо того, чтобы генерировать исключение?
. Предвидя «почему ты так поступаешь?» ответы, это просто способ, которым мы это делаем, и все. Мы также не будем использовать контент-провайдера. Просто нужен способ синхронизировать доступ к базе данных.
Предполагая, что стандартного способа сделать это не существует, мы Скорее всего, я напишу оболочку вокруг вызовов db, чтобы выполнить некоторую синхронизацию потоков.
Пока вы используете один и тот же объект SQLiteDatabase
, синхронизация выполняется за вас.
Таким образом, если вы обращаетесь к объекту через синглтон, проблем быть не должно. Хотя вы можете добавить дополнительную логику, если хотите реализовать тайм-аут, например. ждать/уведомлять или что-то подобное.