Android libGDX 启动时随机崩溃

Android libGDX crashes randomly on startup

似乎 InputProcessor 正试图 运行 在整个程序完成初始化之前。

如何延迟 InputProcessor

因为我第一次启动程序时随机得到NullPointerExceptions因为touchdown事件在程序加载的中间被触发(程序启动只需要2秒向上)。

我启动了 2 个线程,所以我想我可能需要在 create() 方法中间暂停,直到 2 个线程完成变量初始化。

"Questions seeking debugging help ("为什么这段代码不起作用?") 必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用。"

期望的行为:我创建的线程等待我的其他 2 个线程完成是我认为这个问题将得到解决的方式。

这是我的代码的一个小图表

//create thread 1
//create thread 2
//initialize variables
//initialize InputProcessor
//infinite while loop

//helper thread 1
//initialize some variables
//infinite while loop

//helper thread 2
//initialize some variables
//infinite while loop

问题是创建线程有一个输入似乎甚至在程序完成启动之前就开始输入。这个故障偶尔会在启动的第一秒内发生。

为什么不使用共享 AtomicBoolean 在线程之间发出信号 InputProcessor 可以安全初始化。

或者您可以使用Thread.join在主线程中等待线程完成。

如果没有看到一些最少的代码,将很难给出进一步的答案。

更新 :

根据您的图表序列,main thread 持有对 thread_1thread_2 的引用,这些线程实例中的每一个都可以有一个 AtomicBoolean 值,main thread 可以在继续初始化之前循环检查两者。

或者您也可以使用 Condition variable( android specific or java ) 来阻止 main thread 直到子线程初始化完成。