Admob插页式广告的loadAd函数太慢了

7
我最近使用了带有 Google Play 服务库(顺便说一句,这个库仍然存在不少错误)的 Admob 添加了插屏广告。
插屏广告运作良好,但以下调用会出现问题:
// Begin loading interstitial
interstitial.loadAd(adInterstitialRequest);

非常缓慢,可能会延迟我的应用程序首次启动达2秒钟。

我该怎么做才能避免这种情况?我完全按照Google这里提供的示例进行操作。

FYI 我尝试使用AsyncTask在后台加载广告,但似乎无法实现:

03-23 15:50:21.939: E/AndroidRuntime(3572): Caused by: java.lang.IllegalStateException: loadAd must be called on the main UI thread.

谢谢你


你可以在后台任务中使用RunOnUIThread。这里有详细的用法说明:https://dev59.com/0Wkw5IYBdhLWcg3wGWtk#10135376 - Mdlc
我需要避免使用这个UI线程,实际上这个答案对我没有帮助。 - Yoann Hercouet
1
遇到了同样的问题,引入新的 AdMob 会导致某些设备上应用程序加载时间大大延迟。Banner 广告需要约3秒钟,插页式广告需要另外3秒钟。这仅仅是调用 loadAd,还没有真正显示广告。 - mbwasi
2个回答

1
为了避免应用程序启动变慢,请延迟初始化,直到您的活动已加载并可见:
             mAdView.postDelayed(
                     new Runnable() {
                         @Override
                         public void run() {
                             mAdView.loadAd(adRequest);
                         }
                     }, 500
             );

另请参阅AdMob导致片段显示延迟


1
你使用了广告监听器吗? 尝试这样做:
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId(Your-ad-id-here);

// Create ad request.
AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();

// Begin loading your interstitial.
interstitial.loadAd(adRequest);

interstitial.setAdListener(new AdListener() {
    public void onAdLoaded() {
        displayInterstitial();
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接