Java Admob集成线程无法在基于AndEngine的应用程序上正常工作

Java Admob集成线程无法在基于AndEngine的应用程序上正常工作,java,android,mobile,andengine,Java,Android,Mobile,Andengine,我正在构建一个安卓游戏,由安卓引擎游戏框架提供支持。 我正在使用以下代码与Admob进行集成: @Override protected void onSetContentView() { mRenderSurfaceView = new RenderSurfaceView(this, mEngine); mRenderSurfaceView.applyRenderer(); setContentView(R.layout.main); final FrameLa

我正在构建一个安卓游戏,由安卓引擎游戏框架提供支持。
我正在使用以下代码与Admob进行集成:

@Override
protected void onSetContentView() {
    mRenderSurfaceView = new RenderSurfaceView(this, mEngine);
    mRenderSurfaceView.applyRenderer();
    setContentView(R.layout.main);

    final FrameLayout frameLayout = new FrameLayout(this);
    final FrameLayout.LayoutParams frameLayoutLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
                                         FrameLayout.LayoutParams.FILL_PARENT);


    AdView adView = new AdView(this, AdSize.BANNER, "XXXXXXX");
    adView.refreshDrawableState();
    adView.setVisibility(AdView.VISIBLE);
    final FrameLayout.LayoutParams adViewLayoutParams =
        new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                                     FrameLayout.LayoutParams.WRAP_CONTENT,
                                     Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM);

    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);       
    adRequest.addTestDevice(Secure.ANDROID_ID);
    adView.loadAd(adRequest);

    final android.widget.FrameLayout.LayoutParams surfaceViewLayoutParams =
        new FrameLayout.LayoutParams(super.createSurfaceViewLayoutParams());

    frameLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams);
    frameLayout.addView(adView, adViewLayoutParams);

    this.setContentView(frameLayout, frameLayoutLayoutParams);
}
在游戏中,当球被创建时,它会在动画中淡出
我用一根线做了:

    new Thread(new Runnable() {

        public void run() {
            mBody.setType(BodyType.StaticBody);
            mSprite.setAlpha(0.0f);
            try {
                while(mSprite.getAlpha() < 1.0f) {
                    mSprite.setAlpha(mSprite.getAlpha() + 0.01f);
                    Thread.sleep(3);
                }

                mBody.setType(BodyType.DynamicBody);
                mBody.setLinearVelocity(new Vector2(0, 10));

            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }).start();
new线程(new Runnable()){
公开募捐{
mBody.setType(BodyType.StaticBody);
mSprite.setAlpha(0.0f);
试一试{
while(mSprite.getAlpha()<1.0f){
mSprite.setAlpha(mSprite.getAlpha()+0.01f);
睡眠(3);
}
mBody.setType(BodyType.DynamicBody);
msody.setLinearVelocity(新向量2(0,10));
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}).start();
问题是:
动画效果完美,但
添加Admob代码时,精灵会出现一秒钟
然后,就消失了

在我看来,这两块代码之间似乎存在问题。
但我无法确定解决方案,甚至无法确定是什么导致了这个问题的发生

我只知道当Admob代码在我的应用程序中组合时,动画不起作用

我想知道为什么以及如何解决它。
谢谢大家

我建议您使用XML文件来放置管理员。它更干净,易于使用,并且根据我自己的测试,它比覆盖onsetcontentview更快。为了实现这一点,您需要扩展LayoutGameActivity(该类还有一个简单的版本。SimpleLayoutActivity如果我没有错的话)


当我有一台电脑时,我会改进答案。

这可能是完全无关的,但我最近遇到了一个随机消失的精灵的问题,尽管没有与Admob连接。当我在设置发动机的位置添加以下行时,问题消失了:

engineOptions.getRenderOptions().disableExtensionVertexBufferObjects();