这个错误意味着什么?

时间:2014-11-06 06:07:30

标签: android android-sqlite logcat android-debug

我在很多设备上遇到了很多崩溃,但是在我的设备上(lg p920)它运行正常。以下报告来自护目镜播放我的应用程序崩溃并获得6个报告。顺便说一句,我使用sql预创建的数据库。还创建了android_metadata表和locale en_US也插入到该数据库。

这是堆栈跟踪:

android.database.sqlite.SQLiteDiskIOException: disk I/O error
    at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
    at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2074)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1014)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
at offline.sinhaladic.com.MainActivity.sugen(MainActivity.java:1312)
at offline.sinhaladic.com.MainActivity$7.afterTextChanged(MainActivity.java:972)
at android.widget.TextView.sendAfterTextChanged(TextView.java:7665)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8067)
at android.text.SpannableStringBuilder.sendTextHasChanged(SpannableStringBuilder.java:900)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:353)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:420)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:29)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:663)
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:425)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:333)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

3 个答案:

答案 0 :(得分:0)

这不是您会看到的常见错误。在内存较低的某些设备上很少发生这种情况。当您的应用程序尝试写入数据库时​​,它内存不足并无法写入。您可以做的是检查可用存储,如果它真的下降到零,则通知用户。

答案 1 :(得分:0)

<强> SQLiteDiskIOException

java.lang.Object
   ↳    java.lang.Throwable
       ↳    java.lang.Exception
           ↳    java.lang.RuntimeException
               ↳    android.database.SQLException
                   ↳    android.database.sqlite.SQLiteException
                       ↳    android.database.sqlite.SQLiteDiskIOException

表示访问SQLite数据库文件时发生IO错误的异常。

参考:SQLiteDiskIOException

答案 2 :(得分:0)

参考:https://stackoverflow.com/a/4828540/1318946

  

弹出的一个想法是硬编码的路径   数据库文件位于。 DB_PATH =   “/数据/数据/ YOUR_PACKAGE /数据库/”;

     

我想这条路径可能在Android 2.2.1上无效   欲望高清。我用以下方法交换了这条路径:Environment.getDataDirectory()   +“/ data / YOURPACKAGE / databases /”+ DB_NAME;

     

当我有机会测试时,我会试着指出问题   实际的手机自己。如果有人测试此解决方案,请告诉我   如果它解决了它。