我正在使用BugSense来追踪我的应用中的错误,它刚刚发现了一个与SQLite相关的问题......问题是我不使用SQLite。我虽然使用sharedPreferences和广告,但根本没有SQLite ......
为什么会这样?坏SD卡或没有空间? 为了以防万一,我应该用try catch块包围sharedPreferences代码吗?
这是stacktrace:
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 android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1043)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1036)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:771)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:215)
at android.webkit.WebViewDatabase.initDatabase(WebViewDatabase.java:227)
at android.webkit.WebViewDatabase.init(WebViewDatabase.java:209)
at android.webkit.WebViewDatabase.access$000(WebViewDatabase.java:38)
at android.webkit.WebViewDatabase$1.run(WebViewDatabase.java:190)
来自BugSense的更多数据:
答案 0 :(得分:3)
为什么会这样?
您使用的是WebView
,它使用了SQLite(其缓存IIRC)。至于你为什么会遇到磁盘I / O错误,考虑到你面前的信息,很难肯定地说出来。
坏SD卡还是没有空间?
WebView
会将其数据库存储在内部存储中,因此它不会是一张糟糕的SD卡。
当然没有内部存储空间。
为了以防万一,我应该用try catch块包围sharedPreferences代码吗?
由于这与您的SharedPreferences
无关,我怀疑它会有所帮助。
此外,除非您发现这种情况发生了很多,否则我认为这是特定于设备的问题(例如,内部存储空间不足)。
答案 1 :(得分:0)
我发现如果你在同一个窗口中使用2个以上的webview,可能会发生SQLiteDiskIOException。因此,建议您在活动中使用单个webview