А как насчет многопоточности в Android SQLite?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 А как насчет многопоточности в Android SQLite?

Сообщение Anonymous »

В моем приложении мне нужно реализовать некоторый пользовательский интерфейс и службу синхронизации.
Она работает в фоновом режиме и обновляет данные. Служба синхронизации не очень проста, она использует многопоточность.

Итак, вот моя история:
Когда я начал разрабатывать это приложение, я ничего не знал о sqlite, поэтому просто не использовал синхронизацию потоков в Java. Результат: я получил много исключений, таких как «SQLiteException: база данных заблокирована: BEGIN EXCLUSIVE;»

Затем я синхронизировал все свои транзакции с обычным блоком Javasynchronized () {}. Все стало намного лучше. Но я использовал Cursors для реализации CursorAdapter для своих списков. Итак, иногда я получал одно и то же «SQLiteException: база данных заблокирована: BEGIN EXCLUSIVE»;

Я закончил создание небольшой потокобезопасной утилиты sqlite, которая обрабатывает все эти потокобезопасные вещи. Также мне нужно использовать что-то вроде ArrayAdapter (прочитать все данные из курсора и закрыть их после чтения, а также синхронизировать этот блок) для моего пользовательского интерфейса. Итак, все работает нормально

Но мне не нравится такой способ обработки пользовательского интерфейса, потому что с этим решением пользовательский интерфейс стал очень медленным - чтение некоторого объема данных из курсора происходит довольно быстро, но медленнее, чем при использовании CursorAdapter

Итак, кто получил решение для этого вопроса?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/557 ... oid-sqlite
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»