在场景中引入“广告暴徒”“插页式广告”和“引擎游戏”广告?

时间:2013-09-28 11:05:32

标签: android admob andengine

我们在andengine编码的基于关卡的游戏中使用了admob插页式广告。 第一次加载游戏时,广告会正确显示。但是,我们希望在每个级别后显示广告。当第二次调用广告时,即在场景上的级别上,它给出错误。我们使用以下代码。

"interstitial = new InterstitialAd(this, "123456789");
           adRequest = new AdRequest();
                   interstitial.loadAd(adRequest);
                   interstitial.setAdListener(ShootBalloonMainActivity.this);"

这是错误:无法在未调用Looper.prepare()的线程内创建处理程序

我们得出的结论是,当广告第二次显示时,主线程没有暂停,这种情况正在发生。所以两个线程同时运行,抛出错误。 是这样的吗?如果是这样,我们如何暂停主线程?

3 个答案:

答案 0 :(得分:1)

我的方式:

在MainActivity中添加此内容

public void removeAd() {
        LinearLayout layoutBottom = (LinearLayout) findViewById(R.id.bottom);
        layoutBottom.removeAllViews();

    }

    private void attachAd(LinearLayout layout) {
        AdWhirlLayout adWhirlLayout = new AdWhirlLayout(this, Constants.adwhirlId);
        layout.addView(adWhirlLayout);
    }


    public void showBottomAd() {
        removeAd();
        LinearLayout layout = (LinearLayout) findViewById(R.id.bottom);
        attachAd(layout);
    }

在你的每一个场景中:

GameActivity.gameActivity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                GameActivity.gameActivity.showBottomAd();
            }
        }) ;

答案 1 :(得分:0)

一些事情:

1)分开构建插页式广告以加载广告。您应该只构建一次,您应该在每个级别之后加载(并显示)广告。

2)无法在未调用Looper.prepare()的线程内创建处理程序,这意味着需要从主UI线程调用生成此消息的代码(或者已通过调用Looper.prepare()配置为此类的线程。这听起来像是第二次尝试展示广告(或者可能是构建

答案 2 :(得分:0)

当你从一个场景移动到另一个场景时,首先你必须删除之前的“adRequest”实例然后添加新的实例。当你调用每个场景时,将这段代码放在“UIthread”中。它会起作用。