[英]Android libGDX crashes randomly on startup
似乎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等待主线程中的线程完成。
如果不看一些最少的代码,将很难给出进一步的答案。
更新 :
根据您的图序列, main thread
持有对thread_1
和thread_2
引用,这些线程实例中的每个线程实例都可以具有AtomicBoolean值, main thread
可以在继续初始化之前在循环中检查这两个值。
或者,您也可以使用Condition variable
( 特定于android或java )来隐藏main thread
直到完成子线程初始化为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.