В моем приложении мне нужно реализовать некоторый пользовательский интерфейс и службу синхронизации.
Она работает в фоновом режиме и обновляет данные. Служба синхронизации не очень проста, она использует многопоточность.
Итак, вот моя история:
Когда я начал разрабатывать это приложение, я ничего не знал о sqlite, поэтому просто не использовал синхронизацию потоков в Java. Результат: я получил много исключений, таких как «SQLiteException: база данных заблокирована: BEGIN EXCLUSIVE;»
Затем я синхронизировал все свои транзакции с обычным блоком Javasynchronized () {}. Все стало намного лучше. Но я использовал Cursors для реализации CursorAdapter для своих списков. Итак, иногда я получал одно и то же «SQLiteException: база данных заблокирована: BEGIN EXCLUSIVE»;
Я закончил создание небольшой потокобезопасной утилиты sqlite, которая обрабатывает все эти потокобезопасные вещи. Также мне нужно использовать что-то вроде ArrayAdapter (прочитать все данные из курсора и закрыть их после чтения, а также синхронизировать этот блок) для моего пользовательского интерфейса. Итак, все работает нормально
Но мне не нравится такой способ обработки пользовательского интерфейса, потому что с этим решением пользовательский интерфейс стал очень медленным - чтение некоторого объема данных из курсора происходит довольно быстро, но медленнее, чем при использовании CursorAdapter
Итак, кто получил решение для этого вопроса?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/557 ... oid-sqlite