Java Android Libgdx致命信号11(SIGSEGV),代码1,故障地址0x0

Java Android Libgdx致命信号11(SIGSEGV),代码1,故障地址0x0,java,android,eclipse,libgdx,Java,Android,Eclipse,Libgdx,我知道这是在读取空间之外访问内存的错误,但我完全不知道如何修复。我是android新手,所以我不知道如何在eclipse中从logcat打印出更详细的错误列表。我尝试了所有的方法,从处理所有的东西,到调用System.gc,再到将所有变量设置为null。然而,每当我切换屏幕时,就会出现致命信号。我只需要有人告诉我到底发生了什么,或者我如何才能获得有关错误的更多详细信息。在我的例子中,我从beginContact(inside Contact Listener)尝试创建一个新实体并连接其固定装置时

我知道这是在读取空间之外访问内存的错误,但我完全不知道如何修复。我是android新手,所以我不知道如何在eclipse中从logcat打印出更详细的错误列表。我尝试了所有的方法,从处理所有的东西,到调用System.gc,再到将所有变量设置为null。然而,每当我切换屏幕时,就会出现致命信号。我只需要有人告诉我到底发生了什么,或者我如何才能获得有关错误的更多详细信息。

在我的例子中,我从beginContact(inside Contact Listener)尝试创建一个新实体并连接其固定装置时收到了相同的错误。在我搬出我的身体后,一切都很好。Fixture createFixture(FixtureDef)中可能会出现一些冲突,因为根据手册:直到下一个时间步骤才创建联系人。

我遇到了相同的错误,解决方法是确保我在UI线程上,如下所示:

Gdx.app.postRunnable(new Runnable() {
        @Override
        public void run() {
            // Your crashing code here
        }
});

SIGSEGV是UNIX发送的终止信号,用于终止以某种方式破坏内存的进程。您的错误地址是0x00000000,这意味着您有一个空指针。如果没有更多,我不知道我们还能做什么。看,这是一个类似的问题:当你切换屏幕时?我的猜测是,你有一些东西,不断阅读记忆,不会在其他一切都消失的时候消失。你需要杀死那个线程,当它不再是你的内存时,它就不能访问内存了。通常情况下,这是在同步中断的情况下发生的。该对象被禁用,因为它被发送到gpu进行绘图或其他操作,而您尝试读取它,并获得运行时空指针错误。您仍然可以在其他线程中运行它,但必须修复同步问题。