Erro ao excluir base SQLITE e criar novamente dinamicamente

Android

SQLite

Android com Java

16/10/2020

Tenho um aplicativo Java android rodando a anos. Depois de migrar para o Android 9 (API 28), estou tendo problemas constantemente:

database disk image is malformed (code 11 SQLITE_CORRUPT) e Android SQLiteDiskIOException (code 522 SQLITE_IOERR_SHORT_READ)

O funcionamento do sistema é o seguinte, o sistema tem um processo de sincronismo que faz o upload do banco de dados, prepara um novo (Externo), depois faz o download, apaga o banco de dados atual no dispositivo e coloca o novo que fez o download, ou seja o banco é constantemente sobrescrito no dispositivo!

Este processo sempre funcionou perfeitamente, porém no Android 9 (API 28) por mais incrível que pareça depois de um certo tempo de sincronizar e está trabalhando no aplicativo ocorre os erros acima.

Identifiquei que o problema é exatamente "sobrescrever" o banco de dados no Android 9, mesmo apagando os tais arquivos temporários -shm e wal, já mudei para disableWriteAheadLogging() or PRAGMA journal_mode=DELETE, fecho o banco antes, remove a instância da classe SqliteOpenHelper, não adianta o banco em algum momento esporádico é corrompido aleatoriamente ao fazer um simples rawQuery().

Já mudei para a classe SqliteOpenHelper com e sem singleton. Já utilizei o comando SQLiteDatabase.deleteDatabase antes de mudar o arquivo!

Alguém tem alguma ideia de como resolver este problema?
Giliard Abreu

Giliard Abreu

Curtidas 0
POSTAR