SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

SQLiteDiskIOException com código de erro 10:erro de E/S de disco


Como você está usando o armazenamento externo, seu aplicativo deve estar ciente do estado do armazenamento externo, que pode ser obtido por meio de Environment.getExternalStorageState() .

Você só deve acessar o armazenamento externo quando o estado for MOUNTED .

Se você estiver tentando abrir um arquivo (ou banco de dados SQLite; é apenas um arquivo!) durante a inicialização do dispositivo, você definitivamente tem problemas porque o armazenamento externo não está montado até a inicialização do dispositivo (após a exibição da tela inicial).

A saída é registrar um IntentFilter para ser notificado de todas as alterações no estado de armazenamento externo e se comportar de acordo.

É sempre bom ler a documentação! Consulte a documentação do Android para obter detalhes:http://developer.android.com/reference/android/os/Environment.html

Usar o Armazenamento Externo para esse fim é duvidoso, porque você não pode controlar quando ele fica indisponível! Por exemplo, o usuário conecta seu dispositivo ao USB do computador e seleciona a opção "Ativar armazenamento em massa USB", para que possa acessar o armazenamento externo do dispositivo a partir do computador. Más notícias! Seu aplicativo será desconectado do armazenamento externo e provavelmente sem a oportunidade de fazer qualquer IO de limpeza!

Com esse estado de coisas, você agora fica com o que fazer com todos os dados que você colocaria em seu banco de dados, se estivesse disponível.