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