0

我正在使用 BugSense 来跟踪我的应用程序中的错误,它刚刚捕获了一个与 SQLite 相关的错误……问题是我不使用 SQLite。我虽然使用 sharedPreferences 和 ads,但根本没有 SQLite ......

为什么会这样?SD卡坏或没有空间?为了以防万一,我应该用 try catch 块包围 sharedPreferences 代码吗?

这是堆栈跟踪:

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 的更多数据:

在此处输入图像描述

4

2 回答 2

3

为什么会这样?

您正在使用WebView,并且它在幕后使用 SQLite(用于其缓存 IIRC)。至于为什么会出现磁盘 I/O 错误,鉴于您面前的信息,这很难确定。

SD卡坏或没有空间?

WebView将其数据库存储在内部存储中,因此它不会是坏的 SD 卡。

内部存储空间不足当然是可能的。

为了以防万一,我应该用 try catch 块包围 sharedPreferences 代码吗?

由于这与您的 无关SharedPreferences,我怀疑它会有所帮助。

此外,除非您经常看到这种情况,否则我会认为这是特定于设备的问题(例如,内部存储不足)。

于 2013-03-13T23:28:51.480 回答
0

我发现如果您在同一个窗口中使用超过 2 个 webviews,可能会发生 SQLiteDiskIOException。所以建议在你的活动中只使用单个 webview

于 2013-12-05T03:44:05.453 回答