yav*_*ava 28 android android-sqlite
我将SQLite数据库移动到SD卡,但有时会抛出以下异常:
android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
Run Code Online (Sandbox Code Playgroud)
关于如何防止这种情况发生的任何建议?
由于您使用的是外部存储,因此您的应用程序必须了解可以通过的外部存储状态Environment.getExternalStorageState().
您必须仅在状态为时访问外部存储MOUNTED.
如果您在设备启动期间尝试打开文件(或SQLite数据库;它只是一个文件!),您肯定会遇到问题,因为直到设备启动(显示主屏幕后)才会安装外部存储.
解决此问题的方法是注册一个IntentFilter以通知外部存储状态的所有更改,并相应地执行操作.
阅读文档总是一个好主意!有关详细信息,请参阅Android文档:http://developer.android.com/reference/android/os/Environment.html
为此目的使用外部存储是可疑的,因为您无法控制它何时变得不可用!例如,用户将其设备插入其计算机上的USB,并选择"启用USB大容量存储"选项,以便他们可以从计算机访问其设备的外部存储.坏消息!您的应用将与外部存储断开连接,并且很可能没有机会进行任何清理IO!
在这种情况下,如果只有可用的数据,您现在可以处理将要放入数据库的所有数据.
| 归档时间: |
|
| 查看次数: |
11169 次 |
| 最近记录: |