我正在編寫在其他線程處理Android OpenGL的程序。但是這個代碼會凍結。例如,它直接處理一個方法而不調用task.get(),如果它是相同的線程。這種方式存在嗎?如何在同一線程的情況下避免在GLSurfaceView的隊列事件
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");