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

时间:2011-08-10 10:58:24

标签: android android-sqlite

我将SQLite数据库移动到SD卡,但有时会引发以下异常:

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

关于如何防止这种情况发生的任何建议?

1 个答案:

答案 0 :(得分:8)

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

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

如果您在设备启动期间尝试打开文件(或SQLite数据库;它只是一个文件!),您将肯定出现问题,因为外部存储未安装直到设备启动(显示主屏幕后)。

解决这个问题的方法是注册IntentFilter以获得有关外部存储状态的所有更改的通知,并采取相应的行为。

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

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

在这种情况下,如果只有可用的数据,您现在可以处理将要放入数据库的所有数据。

相关问题