看起来InputProcessor
正在尝试在整个程序完成初始化之前运行。
如何延迟InputProcessor
?
因为当我第一次启动程序时,我随机得到NullPointerExceptions
,因为touchdown
事件在程序加载过程中被触发(只需要2秒)启动程序)。
我启动了 2 个线程,因此我想我可能需要在 create()
方法中间暂停,直到这 2 个线程完成其变量的初始化。
“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用。”
期望的行为:我创建线程等待其他 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在主线程中等待线程完成。
如果没有看到一些最小的代码,就很难给出进一步的答案。
更新:
根据您的图表序列,主线程
保存对thread_1
和thread_2
的引用,每个线程实例都可以有一个AtomicBoolean值,主线程
可以在继续初始化之前循环检查两者。
或者您也可以使用条件变量
( android specific 或 java )来 blick 主线程
,直到子线程初始化完成。
关于java - Android libGDX 在启动时随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291586/