java - Android libGDX 在启动时随机崩溃

标签 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

问题是创建线程的输入似乎在程序完成启动之前就已接受输入。此故障仅在启动后的第一秒内偶尔发生。

最佳答案

为什么不使用共享 AtomicBoolean线程之间发出信号 InputProcessor 可以安全初始化。

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

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

更新:

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

或者您也可以使用条件变量( android specificjava )来 blick 主线程,直到子线程初始化完成。

关于java - Android libGDX 在启动时随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291586/

相关文章:

android - 为按钮定义 xml 文件以根据状态更改背景和文本颜色

无法弄清楚如何在我的客户端-服务器模型中实现线程

java - 如何确保使用子类参数调用的方法与通用类对象一起使用?

java - 当用作另一个对象的成员变量时如何设置和检索 ArrayList

android - 将 WebView 放在 LinearLayout 的中心

android - java.io.IOException : SERVICE_NOT_AVAILABLE in GCM Client 异常

c - pthreads的生产者消费者问题

c++ - cilk reduce 是如何完成的(thread vs smid)

java - 为返回类型 'Optional<T>' 编写 Javadoc

java - 源服务器未找到目标资源的当前表示或不愿透露存在的表示