2011-08-10 1 views
27

나는 SD 카드에 SQLite 데이터베이스를 이동하지만, 경우에 따라서는 다음과 같은 예외가 발생합니다 : 나는이를 방지 할 수있는 방법에SQLiteDiskIOException : 디스크 I/O 오류

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

어떤 제안 ?

+4

왜 이것을 거절 했습니까? 이것에 대해서도 관심이 있습니다 ... – Kurru

+4

네, 이것이 진짜 문제입니다. 어떤 도움이 필요합니까? –

+2

동일한 문제가 있지만 내부 저장소가 있으므로 현재 답변이 적용되지 않습니다. – Zitrax

답변

8

외부 저장소를 사용하고 있으므로 응용 프로그램은 Environment.getExternalStorageState()을 통해 얻을 수있는 외부 저장소 상태를 알고 있어야합니다.

상태가 MOUNTED 인 경우 외부 저장소에만 액세스해야합니다. (! 또는 SQLite는 DB, 그냥 파일의) 사용자가 파일을 열려고 시도 할 경우

장치를 시작할 때, 당신은 확실히는 (후 외부 저장 장치가 때문에 잘 디바이스 시작에까지를 장착하지, 문제가있는 것 홈 화면이 표시됨).

이 방법은 IntentFilter을 등록하여 외부 저장소 상태의 모든 변경 사항을 알리고 이에 따라 적절하게 동작하는 것입니다.

설명서를 읽는 것이 좋습니다. 자세한 내용은 Android 설명서를 참조하십시오. http://developer.android.com/reference/android/os/Environment.html

외부 저장 장치를 사용할 수 없게되면 제어 할 수 없으므로이 용도로 외부 저장소를 사용하는 것은 모호합니다! 예를 들어, 사용자는 자신의 컴퓨터에있는 USB에 장치를 연결하고 "USB 대용량 저장 사용"옵션을 선택하여 컴퓨터에서 장치의 외부 저장소에 액세스 할 수 있습니다. 나쁜 소식! 앱이 외부 저장소와 연결이 끊어지며 대부분의 경우 정리 IO를 수행 할 기회가 없습니다.

이 상태에서는 사용할 수있는 경우 데이터베이스에 넣을 모든 데이터로 수행 할 작업이 남아 있습니다.

관련 문제