在我的游戏过程中有一个地方我在重新连接孩子之前将其分离,所以我按照以下步骤进行:
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?
感谢。
答案 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();
}
});
}
}