这个错误是啥意思?
Posted
技术标签:
【中文标题】这个错误是啥意思?【英文标题】:what does this error means?这个错误是什么意思? 【发布时间】:2014-11-06 06:07:29 【问题描述】:我在很多设备上遇到了很多崩溃,但在我的设备(lg p920)上它工作正常。以下报告来自 goggle play 我的应用程序崩溃并收到 6 份报告。顺便说一句,我使用 sql 预先创建的数据库。还创建了 android_metadata 表和语言环境 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)
【问题讨论】:
发帖1312@MainActivity
1312 ?代码190行
你有没有初始化你的 dbHelper 变量。 db = dbHelper.getWritableDatabase();
你用过什么库吗? offline.sinhaladic.com.MainActivity.sugen(MainActivity.java:1312)
?
这是 MainActivity.java sinhaladic.com/te/MainActivity.java 这是 DatabaseHelper.java sinhaladic.com/te/DatabaseHelper.java
【参考方案1】:
参考:https://***.com/a/4828540/1318946
弹出的一个想法是硬编码路径 数据库文件位于。 DB_PATH = “/data/data/YOUR_PACKAGE/databases/”;
我猜这个路径可能在 Android 2.2.1 上无效 渴望高清。我交换了这条路径:Environment.getDataDirectory() + “/data/YOUR_PACKAGE/databases/” + DB_NAME;
当我有机会在 我自己的实际电话。如果有人测试此解决方案,请告诉我 如果解决了。
【讨论】:
【参考方案2】:这不是您会看到的常见错误。在某些内部内存不足的设备上很少发生这种情况。当您的应用程序尝试写入数据库时,它耗尽了内部内存并且无法写入。您可以做的是检查可用存储空间,如果它真的降为零,请通知用户。
【讨论】:
【参考方案3】: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。
【讨论】:
以上是关于这个错误是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章