Метод WebView был вызван в потоке 'FinalizerDaemon', НО МОЕ ПРИЛОЖЕНИЕ НЕ ИМЕЕТ WEBVIEW - PullRequest
1 голос
/ 17 июня 2019

Я использую политику StrictMode при разработке моего приложения:

  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());

Я испытываю новый тип сбоя, который появился из ниоткуда:

W/WebView: java.lang.Throwable: A WebView method was called on thread 'FinalizerDaemon'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 2) {7424b6e} called on null, FYI main Looper is Looper (main, tid 2) {7424b6e})
    at android.webkit.WebView.checkThread(WebView.java:2695)
    at android.webkit.WebView.loadUrl(WebView.java:969)
    at com.google.android.gms.ads.internal.webview.v.e(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:1)
    at com.google.android.gms.ads.internal.webview.v.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:9)
    at com.google.android.gms.ads.internal.webview.t.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:10)
    at com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:2)
    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:252)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:239)
        at java.lang.Daemons$Daemon.run(Daemons.java:105)
        at java.lang.Thread.run(Thread.java:764)


2019-06-17 15:25:59.035 31170-31180/hu.myapp.name D/StrictMode: StrictMode policy violation: android.os.strictmode.WebViewMethodCalledOnWrongThreadViolation
        at android.webkit.WebView.checkThread(WebView.java:2695)
        at android.webkit.WebView.loadUrl(WebView.java:969)
        at com.google.android.gms.ads.internal.webview.v.e(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:1)
        at com.google.android.gms.ads.internal.webview.v.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:9)
        at com.google.android.gms.ads.internal.webview.t.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:10)
        at com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:2)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:252)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:239)
        at java.lang.Daemons$Daemon.run(Daemons.java:105)
        at java.lang.Thread.run(Thread.java:764)

Мое приложениеНЕ ИМЕЕТ НИКАКИХ веб-просмотров, вот почему это странно.

Это действительно раздражает, сбой не включает никаких строк моего кода, только пакеты для Android и Google.

Любыеидеи?

1 Ответ

1 голос
/ 17 июня 2019

Очевидно, вы используете SDK для рекламы в приложении, который использует WebView (Admob?) См. com.google.android.gms.ads.internal.webview....

Кроме того, из моего опыта работы с WebView и StrictMode тот факт, что вы получаете такое поведение, вероятно, не является ошибкой в ​​SDK для рекламы: в нашем приложении нам пришлось отключить некоторые проверки (или уменьшить штраф войти в систему), чтобы обойти проблему (мы используем WebView, а WebView сам создает проблемы с StrictMode из-за доступа к диску из потока пользовательского интерфейса и подобных проблем).

...