Android libGDX的活套错误

Android libGDX的活套错误,android,multithreading,android-activity,libgdx,ads,Android,Multithreading,Android Activity,Libgdx,Ads,我不太熟悉安卓系统的活动,以及它们是如何工作的;关于这个话题的任何指导都将是惊人的。我在将广告sdk与游戏集成时遇到问题。我将介绍几个类,以便充分理解我的代码。本质上,我正在尝试确定一种将StartApp sdk(广告sdk)与我的libGDX游戏集成的好方法。我得到的似乎是由startAppAd.show()引起的活套错误;和startAppAd.load();被召唤 下面是堆栈跟踪(提到一个ui线程,并在另一个线程上加载ad): 正如您可能看到的,我让这个活动实现了我创建的接口,然后我将活动

我不太熟悉安卓系统的活动,以及它们是如何工作的;关于这个话题的任何指导都将是惊人的。我在将广告sdk与游戏集成时遇到问题。我将介绍几个类,以便充分理解我的代码。本质上,我正在尝试确定一种将StartApp sdk(广告sdk)与我的libGDX游戏集成的好方法。我得到的似乎是由startAppAd.show()引起的活套错误;和startAppAd.load();被召唤

下面是堆栈跟踪(提到一个ui线程,并在另一个线程上加载ad):

正如您可能看到的,我让这个活动实现了我创建的接口,然后我将活动本身传递给ApplicationListener,从而允许libGDX方法与该活动交互。 这就是接口;根据我数小时的研究,这是在libGDX中整合广告的最佳方式(但这些方式是针对类似的广告sdk而不是StartApp的):

最后是ApplicationListener(FreeTappGame类):

非常感谢您抽出时间。

您需要打电话

Looper.prepare();
确保在一个线程中只调用它一次。这对我很有用:

boolean looperprepare = false;


public void yourmethod(){
    if (!looperprepare) {
        Looper.prepare();
        looperprepare = true;
    }
    ....
}

我会删除此线程,因为这里有一个类似的问题: 但是在stackoverflow上没有太多startapp解决方案,我认为这个问题将有助于尝试集成startapp的人。我换了

@Override
    public boolean showAds() {
        startAppAd.load();
        startAppAd.show();
        return true;
    }

我将startAppAd.load()放在initialize方法之后:

initialize(new FreeTappGame(this), cfg);
startAppAd.load();

这对我来说是个好办法;我希望这对某人有所帮助。

我想出来了,我会尽快发布解决方案。当我这样做时,它会说我只能创建一个活套。不过我找到了一个有效的解决办法。我会在允许的时候发布它。
Looper.prepare();
boolean looperprepare = false;


public void yourmethod(){
    if (!looperprepare) {
        Looper.prepare();
        looperprepare = true;
    }
    ....
}
@Override
    public boolean showAds() {
        startAppAd.load();
        startAppAd.show();
        return true;
    }
@Override
public boolean showAds() {
    this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
        startAppAd.show();

        }
    });
    return true;
}
initialize(new FreeTappGame(this), cfg);
startAppAd.load();