自添加adMob以来,AndEngine游戏崩溃了

时间:2014-05-02 03:19:08

标签: android admob andengine

在我的游戏过程中有一个地方我在重新连接孩子之前将其分离,所以我按照以下步骤进行:

activity.getEngine().runOnUpdateThread(new Runnable(){
            public void run() {
                detachChildren();
            }
        });

但是当他们重新连接游戏时崩溃就好像实体从未分离过一样。这是因为我添加了admob。我怀疑线程admob运行时没有给出时间来更新线程来完成它的工作。

我尝试将更新线程优先级设置为最大值,如下所示:

this.getEngine().getEngineOptions().setUpdateThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_DISPLAY);

但它没有帮助。 因此我的问题是,如何在运行其余代码之前确保updateThread的runnable完成其工作?或者,或者我如何使其优先级高于adMob?

感谢。

1 个答案:

答案 0 :(得分:0)

我决定这样做......尽管我发现它不够优雅,但它确实有效。

public void loseAndRestart(){
        if(runnableDone){
            if(livesLost>2){
                saveHigh();
                youLooseStartAgainPrompt(0);
            } else if (youLooseScreen){
                youLooseScreen = false;
                scoreTally.reset();
                lifeTally.firstInit();
            } else {
                scoreTally.reattach();
                lifeTally.init();
            }
            if(!youLooseScreen){
                diddly.init();
                craneEngine.purgeAndInit();
                torch.init();
                pipeNDrops.init();
                lifeLost = false;
            }
            runnableDone = false;
        } else {
            activity.getEngine().runOnUpdateThread(new Runnable(){
                public void run() {
                    detachChildren();
                    runnableDone = true;
                    loseAndRestart();
                }
            });
        }
    }