Android обращается к базе данных SQLite из нескольких потоков - PullRequest
1 голос
/ 22 августа 2011

У меня есть база данных SQLite в Android, доступ к которой осуществляется из потока, когда выполняется действие, и в onPause () действия создается новый поток, чтобы сохранить все в базе данных с другим потоком, чтобы избежать проблем тайм-аута,Тем не менее, когда я пытаюсь сделать это, я либо получаю базу данных заблокированных ошибок.Как я могу это исправить?Так как мне нужно получить доступ к базе данных из отдельного потока в onPause (), могу ли я каким-то образом удалить свой предыдущий доступ к ней, так как больше не буду ее использовать?

Ответы [ 2 ]

0 голосов
/ 22 августа 2011

Насколько я знаю, SQLite не поддерживает одновременный доступ, поэтому вам нужно либо иметь выделенный поток для обеспечения доступа, либо вам нужно получить блокировку для экземпляра объекта SQLite.

0 голосов
/ 22 августа 2011

Вы не можете получить доступ к базе данных SQLite, когда она уже заблокирована.

Чтобы избежать этого, Android дает вам ContentProviders для обработки такого рода вещей.

Вы должны реализовать свой собственный ContentProvider, чтобы делать подобные вещи.

При этом базы данных НИКОГДА не могут считаться поточно-ориентированными, если вы сами не управляете потоками.Избегайте использования БД, как это.Вместо этого кэшируйте данные (возможно, в стеке) и запрашивайте доступ к базе данных с помощью обратного вызова, когда ваша текущая транзакция будет завершена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...