2015-05-26 3 views
2

Кто-нибудь использовал AsyncTask с AsyncResult и AsyncExecutor в LibGDX? Я хочу запустить асинхронную аудиозапись и обработку с проверкой готовности результата. Это часть моего кода:AsyncTask в LibGDX - пример

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); 
} 

IsDone() никогда не верно, и я не вижу вызов функции() от FftAnalysis когда-либо выполненных ...

Что я делаю неправильно?

+0

является 'обновлением' когда-либо называемым? Является ли 'GameWorld'' Screen ', который установлен для объекта, который расширяет 'Game'? – EpicPandaForce

+0

Вы пробовали с разумным размером для пула потоков? Имея 300 нитей, сидящих там, вся мелодия кажется расточительной, по крайней мере. Тем не менее, я бы спросил то же самое - вы уверены, что используете этот код? –

ответ

1

Почему бы просто не использовать libgdx api для этого? Посмотрите класс Timer и класс Task здесь: http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Timer.html.

В принципе, вы можете запустить свой код в отдельном потоке и получить результат, когда он будет готов.

+0

фактически, согласно http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/async/AsyncTask.html и http://libgdx.badlogicgames.com/nightlies/docs/api /com/badlogic/gdx/utils/async/AsyncExecutor.html, эти ** являются ** частью API LibGDX. – EpicPandaForce

+2

Я вижу, в любом случае это не так широко используется. Для примера вы можете посмотреть [AssetLoadingTask] (https://github.com/libgdx/libgdx/blob/26f1c3fbc5a96ffd9e63d31c2b07f8d5dac9c95d/gdx/src/com/badlogic/gdx/assets/AssetLoadingTask.java). В любом случае, мой совет - переосмыслить свое решение с точки зрения [Таймер] (http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Timer.html) и Timer.task , Надеюсь, это может вам помочь. – Daniele

Смежные вопросы