似乎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
问题是创建线程有一个输入,即使在程序完成启动之前似乎也需要输入。这个故障只发生在偶尔发射的第一秒内。
答案 0 :(得分:1)
为什么不使用共享
线程之间的AtomicBoolean表示InputProcessor
可以安全地初始化。
或者您可以使用Thread.join等待主线程中的线程完成。
如果没有看到一些最小的代码,就很难给出进一步的答案。
更新:
根据您的图表序列,main thread
保持对thread_1
和thread_2
的引用,这些线程实例中的每一个都可以具有AtomicBoolean值,main thread
可以检查两者在继续初始化之前的循环中。
或者您也可以使用Condition variable
(android specific或java)来点击main thread
,直到完成子线程初始化。