Доступ к GreenDao из отдельного процесса (например, синхронизация)

В разных случаях я получаю ошибки журнала, как это

my.app:sync E/SQLiteLog: (5) statement aborts at 1: [PRAGMA journal_mode=TRUNCATE] database is locked

Исследуя эту проблему, я понял, что мое приложение (App.java) иногда инициализируется несколько раз. Мое приложение должно выполнять фоновые операции с базой данных, для этого AndroidManifest.xml порождает сервис, который настроен на android:process=":sync",

Если служба предназначена для запуска в отдельном процессе, она получит собственный экземпляр приложения (см. /questions/39163856/kogda-vyizyivaetsya-metod-application-oncreate/39163862#39163862). Теперь иногда приложение порождается из основного потока, а иногда дополнительно из синхронизировать процесс доступа к тому же файлу, что привело к проблеме блокировки выше.

У кого-нибудь есть идеи о том, как на самом деле получить доступ к GreenDao в таком сценарии? У других людей тоже есть проблемы с этим, но все, что я нашел до сих пор, очень старое, и единственно возможная вещь кажется "ContentProvider", но нет документации о том, как на самом деле использовать GreenDao 3 с поставщиком контента.

0 ответов

Другие вопросы по тегам