別スレッドで Android OpenGL を処理するプログラムを書いています。しかし、このコードの場合はフリーズします。たとえば、同じスレッドの場合、task.get() を呼び出さずにメソッドを直接処理します。そのような方法は存在しますか?
public void onSurfaceCreated(GL10 arg0, EGLConfig arg1)
{
Thread t = new Thread(new Runnable(){
@Override
public void run()
{
FutureTask<Object> task = new FutureTask<Object>(new Callable<Object>() {
@Override
public Object call() {
return null;
}
});
gv.queueEvent(task);
try{
task.get();
}catch(Exception e){
}
Log.i("MainActivity", "Done"); // <- Work
}
});
t.start();
FutureTask<Object> task = new FutureTask<Object>(new Callable<Object>() {
@Override
public Object call() {
return null;
}
});
gv.queueEvent(task);
try{ task.get(); }catch(Exception e){} // <- Freeze
Log.i("MainActivity", "Done");