Android libGDX在启动时随机崩溃

时间:2015-03-27 00:59:35

标签: java android multithreading concurrency libgdx

似乎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

问题是创建线程有一个输入,即使在程序完成启动之前似乎也需要输入。这个故障只发生在偶尔发射的第一秒内。

1 个答案:

答案 0 :(得分:1)

为什么不使用共享 线程之间的AtomicBoolean表示InputProcessor可以安全地初始化。

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

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

更新

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

或者您也可以使用Condition variableandroid specificjava)来点击main thread,直到完成子线程初始化。