Android webview并发导致SQLiteException:数据库被锁定

时间:2012-03-29 13:57:48

标签: android database sqlite webview locked

我没有直接使用SQLite和webview,webview用于我的应用程序中的广告(我使用的是AdMob)。有几个活动就像工作流来回走动一样,一些活动在他们各自的过程中运行我得到了这样的例外。

android.database.sqlite.SQLiteException: error code 5: database is locked
    at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
    at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
    at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1916)
    at android.webkit.WebViewDatabase.flushCacheStat(WebViewDatabase.java:874)
    at android.webkit.CacheManager.trimCacheIfNeeded(CacheManager.java:567)
    at android.webkit.WebViewWorker.handleMessage(WebViewWorker.java:193)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:150)
    at android.os.HandlerThread.run(HandlerThread.java:60)

如果我不使用广告,则没有此类例外。

我认为webview在后台使用SQLite,当活动A中的一个WebView锁定数据库用于写入而活动B中的WebView(B在其自己的进程中运行)在活动A之上打开时,会引发此异常尝试写入数据库并因数据库已锁定而失败

是否有一种标准方法可以禁用非托管WebView使用数据库,非托管我指的是第三方库(如AdMob sdk)使用或配置为不抛出异常或处理异常。

0 个答案:

没有答案