SQLiteDiskIOException错误代码10:磁盘I / O错误

我把一个SQLite数据库移动到一个SD卡,但有时它会抛出以下exception:

android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error 

有关如何防止这种情况发生的任何build议?

Solutions Collecting From Web of "SQLiteDiskIOException错误代码10:磁盘I / O错误"

由于您使用的是外部存储,因此您的应用程序必须了解可通过Environment.getExternalStorageState()获取的外部存储状态。

状态为MOUNTED时,您只能访问外部存储。

如果您在设备启动时尝试打开文件(或SQLite数据库,它只是一个文件!),您肯定会遇到问题,因为直到设备启动(显示主屏幕之后), 才会挂载外部存储。

解决方法是注册一个IntentFilter ,通知外部存储状态的所有变化,并相应地执行。

阅读文档总是一个好主意! 有关详细信息,请参阅Android文档: http : //developer.android.com/reference/android/os/Environment.html

使用外部存储为此目的是可疑的,因为你无法控制什么时候变得不可用! 例如,用户将他们的设备插入他们的计算机上的USB,并select“启用USB大容量存储”选项,以便他们可以从他们的计算机访问他们的设备的外部存储。 坏消息! 您的应用将从外部存储中断开,最有可能的是没有任何清理IO的机会!

在这种情况下,如果只有可用的数据,那么您现在只剩下要处理的所有数据。