Java LibGDX中的异步任务-示例
是否有人在LibGDX中使用带有AsyncResult和AsyncExecutor的AsyncTask? 我想异步运行一些音频录制和处理,并检查结果是否就绪。 这是我代码的一部分:Java LibGDX中的异步任务-示例,java,asynchronous,libgdx,Java,Asynchronous,Libgdx,是否有人在LibGDX中使用带有AsyncResult和AsyncExecutor的AsyncTask? 我想异步运行一些音频录制和处理,并检查结果是否就绪。 这是我代码的一部分: private FftAnalysis analysis; private AsyncExecutor executor; private AsyncResult<Double> asyncResult; (...) public GameWorld(int midPointY) { executor
private FftAnalysis analysis;
private AsyncExecutor executor;
private AsyncResult<Double> asyncResult;
(...)
public GameWorld(int midPointY) {
executor = new AsyncExecutor(300); // I know how big this value is.
analysis = new FftAnalysis();
asyncResult = executor.submit(analysis);
}
public void update(float delta){
if(asyncResult.isDone()){
freq = asyncResult.get();
asyncResult = executor.submit(analysis);
}
私有fft分析;
私有异步执行器;
私有异步结果异步结果;
(...)
公共游戏世界(int中点){
executor=new AsyncExecutor(300);//我知道这个值有多大。
分析=新的FFT分析();
asyncResult=executor.submit(分析);
}
公共无效更新(浮动增量){
如果(asyncResult.isDone()){
freq=asyncResult.get();
asyncResult=executor.submit(分析);
}
isDone()从来都不是真的,而且我没有看到FftAnalysis中的函数调用()被执行过
我做错了什么?为什么不直接使用libgdxapi来做呢?看看这里的计时器类和任务类:
基本上,您可以在单独的线程中运行代码,并在完成后得到结果。事实上,根据和,这些是LibGDX API的一部分。我知道,无论如何,它似乎没有得到广泛的使用。作为一个例子,您可以看一下。无论如何,我的建议是重新考虑您的解决方案,在和Timer.task方面。希望这能对您有所帮助
update
调用过吗?GameWorld
是一个为扩展Game
的对象设置的屏幕吗?你是否尝试过线程池的合理大小?有300个线程在那里,所有的调整看起来都很浪费。也就是说,我会问同样的问题-你确定你真的使用了这个代码吗?