2010-12-05 9 views
3

GLSurfaceView를 확장하고 OpenGL 렌더링을 담당하는 안드로이드 앱에서 렌더러를 구현하는 클래스가 있습니다. onSurfaceCreated 이벤트에서 asynctask를 실행하려고하면 응용 프로그램이 중단되고 예외는 발생하지 않습니다. 주 활동에서 동일한 비동기 작업을 실행하면 모든 것이 잘됩니다. (onSurfaceCreated에서 AsyncTask를 사용할 때 충돌이 발생합니다.

new DownloadImageTask().execute("myParam"); 

왜 내가 onSurfaceCreated 이벤트에서 AsyncTask를 시작할 수 없습니다) onSurfaceCreated에서

public class DownloadImageTask extends AsyncTask<String, Void, Integer> 
{ 
     @Override 
     protected Integer doInBackground(String... myParams) { 
      return 1; 
     } 

     @Override 
     protected void onPostExecute(Integer result) 
     { 

     } 
    } 

을 호출되는 다음 AsyncTask를 구현 그냥 자리 표시 자이 시점에서 무엇입니까?

+0

앱이 고장난 후 logcat 출력을 붙여 넣습니다. – Cristian

+0

어떻게 부르십니까? – st0le

+0

스톨, 질문에 전화 코드를 추가했습니다. –

답변

3

UI 스레드에서 호출해야한다고 생각합니다. 컨텍스트를 전달하고 runOnUIThread를 실행하십시오.

+0

코드가 UI 스레드에서 실행되고 있는지 여부를 확인하는 방법이 있습니까? –

+0

스윙에 길목이 있습니다. 안드로이드에 대한 확신이 없습니다. 나는 조금 봤지만 아무것도 찾을 수 없었다. 하지만 당신이 항상 runOnUIThread를 호출하면 아무 잘못 될 것이라고 생각하지 않습니다. –

관련 문제