SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLiteDiskIOException mit Fehlercode 10:Festplatten-E/A-Fehler

Da Sie externen Speicher verwenden, muss Ihre Anwendung den Zustand des externen Speichers kennen, den Sie über Environment.getExternalStorageState() abrufen können .

Sie dürfen nur auf den externen Speicher zugreifen, wenn der Status MOUNTED ist .

Wenn Sie versuchen, während des Gerätestarts eine Datei (oder SQLite DB; es ist nur eine Datei!) zu öffnen, werden Sie definitiv Probleme haben, da externer Speicher nicht gemountet ist bis weit in den Gerätestart hinein (nachdem der Startbildschirm angezeigt wird).

Der Ausweg besteht darin, einen IntentFilter zu registrieren um über alle Änderungen im externen Speicherstatus benachrichtigt zu werden und sich entsprechend zu verhalten.

Es ist immer eine gute Idee, die Dokumentation zu lesen! Einzelheiten finden Sie in der Android-Dokumentation:http://developer.android.com/reference/android/os/Environment.html

Die Verwendung von externem Speicher für diesen Zweck ist zweifelhaft, da Sie nicht kontrollieren können, wann er nicht mehr verfügbar ist! Beispielsweise schließt der Benutzer sein Gerät an den USB-Anschluss seines Computers an und wählt die Option „USB-Massenspeicher aktivieren“, damit er von seinem Computer aus auf den externen Speicher seines Geräts zugreifen kann. Schlechte Nachrichten! Ihre App wird vom externen Speicher getrennt und höchstwahrscheinlich ohne die Möglichkeit, Bereinigungs-E/A durchzuführen!

Mit diesem Stand der Dinge bleibt Ihnen nun die Frage, was mit all den Daten zu tun ist, die Sie in Ihre Datenbank eingeben würden, wenn sie nur verfügbar wäre.