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 を使用しており、アクティビティ A の 1 つの WebView が書き込み用に db をロックし、アクティビティ B の WebView (B は独自のプロセスで実行されている) がアクティビティ A の上で開かれているときに、この例外が発生したと思います。データベースにあり、データベースがすでにロックされているため失敗します

管理されていない WebViews がデータベースを使用しないようにする標準的な方法はありますか? 管理されていないということは、AdMob SDK などのサード パーティのライブラリで使用されるか、例外をスローしたり、例外を処理したりしないように構成することを意味します。

4

0 に答える 0