Android,AdMob:AdMob广告刷新会破坏帧速率

时间:2012-02-20 18:23:55

标签: android admob

我正在开发一款游戏,而且它的发展非常顺利。我确实对AdMob广告提出了一些问题。每次广告刷新或广告的不同方面,我的帧速率都会下降,几乎使游戏无法播放。以下是我加载广告的内容......

    ad = new AdView(this, AdSize.BANNER, "...");

    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice("...");
    adRequest.addTestDevice("...");

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    lp.addRule(RelativeLayout.CENTER_HORIZONTAL);
    ad.setLayoutParams(lp);

    RelativeLayout layout = new RelativeLayout(this);
    layout.addView(renderView);
    layout.addView(ad);
    ad.loadAd(new AdRequest());     

    setContentView(layout);

我在SurfaceView之上呈现广告的解决方案是将其添加到RelativeLayout,并将SurfaceViewAdView添加到其中。这一切都运行得很好,但每次广告刷新(用户界面或新的广告请求)时,它都会让UI线程陷入困境,从而减慢渲染线程的速度。

有没有一种方法可以让所有这些工作很好地完成所有工作由AdView与主线程分开完成?我不太确定从另一个线程动态更新当前布局。

感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

我也有这个问题。我发现它是由Google广告引起的,这些广告在更改时会生成动画,而不是根本没有动画的静态Admob横幅广告。您的admob应用设置中有一个设置用于控制是否使用Google广告...尝试关闭它以查看它是否有所作为。

答案 1 :(得分:3)

为复活这个问题而道歉,但我遇到了同样的问题,并发现在LAYER_TYPE_SOFTWARE的内部{{1}上转过 AdView 使它更顺畅。

我已经确认这项工作在Android 5.1上运行的版本8.4.0,虽然这种解决方法可能会使更多具有更强CPU的设备受益。

在我的活动中onResume我有

WebView

将runOnWebView方法和WebViewAction接口定义为

/*
 * The AdView attaches it's internal WebView only once it
 * has been loaded, so we need to wait until that happens.
 */
adView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        runOnWebView(mAdView, new WebViewAction() {
            @Override
            public void run(WebView view) {
                // the most important part is here
                view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
            }
        });
    }
});