SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLiteDiskIOException avec le code d'erreur 10 :erreur d'E/S de disque

Puisque vous utilisez le stockage externe, votre application doit être consciente de l'état du stockage externe, que vous pouvez obtenir via Environment.getExternalStorageState() .

Vous ne devez accéder au stockage externe que lorsque l'état est MOUNTED .

Si vous essayez d'ouvrir un fichier (ou une base de données SQLite ; ce n'est qu'un fichier !) Au démarrage de l'appareil, vous allez certainement rencontrez des problèmes, car le stockage externe n'est pas monté jusqu'au démarrage de l'appareil (après l'affichage de l'écran d'accueil).

La solution consiste à enregistrer un IntentFilter être informé de tous les changements d'état du stockage externe et se comporter en conséquence.

C'est toujours une bonne idée de lire la documentation! Consultez la documentation Android pour plus de détails :http://developer.android.com/reference/android/os/Environment.html

L'utilisation du stockage externe à cette fin est douteuse, car vous ne pouvez pas contrôler quand il devient indisponible ! Par exemple, l'utilisateur branche son appareil en USB sur son ordinateur et sélectionne l'option "Activer le stockage de masse USB", afin qu'il puisse accéder au stockage externe de son appareil à partir de son ordinateur. Mauvaises nouvelles! Votre application sera déconnectée du stockage externe, et très probablement sans possibilité de faire un nettoyage IO !

Avec cet état de fait, vous vous retrouvez maintenant avec Que faire avec toutes les données que vous placeriez dans votre base de données, si seulement elles étaient disponibles.