4

我没有直接使用 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 并且当 Activity A 中的一个 WebView 锁定 db 用于写入和 Activity B 中的 WebView(B 在它自己的进程中运行)在 Activity A 之上打开也试图写入时引发了这个异常在数据库中并失败,因为数据库已经锁定

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

4

0 回答 0