我正在编写在其他线程上处理 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");