2013-03-19 1 views
1

내 surfraceview는 내 응용 프로그램의 대부분을 차지하고 있으며 지연을 줄이기 위해 UI 스레드에서 제거하도록 지시 받았습니다. AsyncTask에서 SurfaceView를 실행할 수 있습니까?SurfaceView를 UI에서 끄기 스레드

+1

어, UI 스레드에서 UI를 실행할 수 없습니다. CalledFromWrongThread 예외가 발생합니다. 그러나 백그라운드 스레드에서 그릴 위치를 알려주는 UI 처리 스레드에서 * 실제 그리기 *를 수행하는 모든 처리 작업을 수행 할 수 있습니다. –

+2

SurfaceView는 백그라운드 스레드에서 그려지기 때문에 SurfaceHolder에서 lockCanvas() 및 unlockCanvasAndPost() 메소드를 사용할 수 있습니다. –

답변

1

AsyncTask에서 SurfaceView로 그릴 수는 있지만 권장하지는 않습니다. AsyncTasks는 직렬 대기열에서 실행되어 다른 작업을 차단할 수 있습니다. 대신 스레드 만 사용하십시오. SDK에는이를 수행하는 방법을 보여주는 LunarLander라는 샘플 앱이 포함되어 있습니다.