最终效果抛出的未被发现的例外:所有WebView方法都必须在同一线程上调用.(预期循环)



我正在使用admob SDK 18.1.1

并获得最终确定的异常

java.lang.RuntimeException: 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) {f4f671a} called on null, FYI main Looper is Looper (main, tid 2) {f4f671a})

这个问题发生在Admob SDK内吗?

堆栈跟踪:

at android.webkit.WebView.checkThread(WebView.java:2732)
        at android.webkit.WebView.evaluateJavascript(WebView.java:1128)
        at com.google.android.gms.internal.ads.zzbbq.evaluateJavascript(com.google.android.gms:play-services-ads@@18.1.1:108)
        at com.google.android.gms.internal.ads.zzbbq.zza(com.google.android.gms:play-services-ads@@18.1.1:144)
        at com.google.android.gms.internal.ads.zzbbq.zzfk(com.google.android.gms:play-services-ads@@18.1.1:151)
        at com.google.android.gms.internal.ads.zzbbq.zza(com.google.android.gms:play-services-ads@@18.1.1:190)
        at com.google.android.gms.internal.ads.zzbbq.zza(com.google.android.gms:play-services-ads@@18.1.1:101)
        at com.google.android.gms.internal.ads.zzbbq.zzav(com.google.android.gms:play-services-ads@@18.1.1:630)
        at com.google.android.gms.internal.ads.zzbbq.onDetachedFromWindow(com.google.android.gms:play-services-ads@@18.1.1:434)
        at android.view.View.dispatchDetachedFromWindow(View.java:18583)
        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3793)
        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3785)
        at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5375)
        at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5346)
        at android.view.ViewGroup.removeView(ViewGroup.java:5277)
        at com.google.android.gms.ads.internal.overlay.zze.onDestroy(com.google.android.gms:play-services-ads@@18.1.1:125)
        at com.google.android.gms.internal.ads.zzbbq.destroy(com.google.android.gms:play-services-ads@@18.1.1:472)
        at com.google.android.gms.internal.ads.zzbbo.destroy(com.google.android.gms:play-services-ads@@18.1.1:106)
        at com.google.android.gms.internal.ads.zzbrc.finalize(com.google.android.gms:play-services-ads@@18.1.1:33)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:256)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:243)
        at java.lang.Daemons$Daemon.run(Daemons.java:109)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: 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) {f4f671a} called on null, FYI main Looper is Looper (main, tid 2) {f4f671a})

OS:Android 7.1,8.0,8.1,9.0正在获得相同的错误日志

此问题主要是因为您使用间隙广告。因为我遇到了同样的问题,Google拒绝了我对该应用程序进行的任何更新,直到我"解决"了该问题。

这里的问题是,当您退出"主页"按钮上的应用程序时,间质广告也将尝试加载。

因此,离开应用程序时必须阻止广告加载。

您可以尝试此操作(我做了什么(:

在您的Activiy/Fragment中创建一个字段变量,例如 private boolean shouldLoadAds;

在您的ongreate((中,您初始化了您的间隙:

mInterstitialAd = new InterstitialAd(this);
mInterstitialAd .setAdUnitId(getString(R.string.adview_interstitial));
mInterstitialAd .loadAd(new AdRequest.Builder().build());

,当您致电间质以显示它时,您会这样这样做:

if(mInterstitialAd != null && mInterstitialAd .isLoaded()) {
            mInterstitialAd .show();
            mInterstitialAd .setAdListener(new AdListener(){
                @Override
                public void onAdClosed() {
                    super.onAdClosed();
                    if(shouldLoadAds) { //load the ad only if shouldLoadAds == true
                        mInterstitialAd .loadAd(new AdRequest.Builder().build());
                    }
                    //here some code, what should be done, after the ads is cloded
                }
            });
        }

然后,您必须覆盖onStart()onStop()

@Override
    public void onStart() {
        super.onStart();
        shouldLoadAds= true;
    }
    @Override
    public void onStop() {
        shouldLoadAds= false;
        super.onStop();
    }

相关内容

最新更新