我感動SQLite數據庫到SD卡,但有時它會拋出以下異常:SQLiteDiskIOException,錯誤代碼10:磁盤I/O錯誤
android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
我如何能防止這種情況發生的任何建議?
我感動SQLite數據庫到SD卡,但有時它會拋出以下異常:SQLiteDiskIOException,錯誤代碼10:磁盤I/O錯誤
android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
我如何能防止這種情況發生的任何建議?
由於您正在使用外部存儲,因此您的應用程序必須瞭解外部存儲狀態,您可以通過Environment.getExternalStorageState()
獲取該狀態。
當狀態爲MOUNTED
時,您只能訪問外部存儲。
如果你試圖打開一個文件(或SQLite的數據庫;!它只是一個文件)裝置啓動時,你會肯定有問題,因爲外部存儲沒有安裝直到進入設備啓動(後主屏幕顯示)。
解決方法是註冊IntentFilter
以通知外部存儲狀態的所有更改,並相應地執行相應操作。
閱讀文檔總是一個好主意!有關詳細信息,請參閱Android文檔:http://developer.android.com/reference/android/os/Environment.html
爲此目的使用外部存儲是可疑的,因爲無法控制何時不可用!例如,用戶可以將他們的設備插入計算機的USB中,然後選擇「啓用USB大容量存儲」選項,以便他們可以從他們的計算機訪問其設備的外部存儲。壞消息!您的應用程序將與外部存儲器斷開連接,並且最有可能沒有任何清理IO的機會!
在這種情況下,您現在只剩下如何處理將要放入數據庫的所有數據(如果只有這些數據可用)。
爲什麼這是低估。我對此感興趣... – Kurru
是的,這是一個真正的問題。任何幫助? –
我有同樣的問題,但與內部存儲,所以目前的答案不適用。 – Zitrax