繁体   English   中英

Android libGDX在启动时随机崩溃

[英]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_1thread_2引用,这些线程实例中的每个线程实例都可以具有AtomicBoolean值, main thread可以在继续初始化之前在循环中检查这两个值。

或者,您也可以使用Condition variable特定androidjava )来隐藏main thread直到完成子线程初始化为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM