Thread 로 되어 있던 음악챠트를 보여주는 소스를 AsyncTask 를 사용하는 것으로 수정했다. 포스트 제일 아래에 source 를 다운로드 받을 수 있으니, 받아서 비교 하면 이해가 쉽지 않을까 생각된다.
이 포스트에서는 Thread 가 AsyncTask 로 변환된 모습을 설명하려 한다.
AsyncTask
AsyncTask 에 관한 문서이다. 참고하자.http://developer.android.com/reference/android/os/AsyncTask.html#doInBackground(Params...)AsyncTask 는 몇 초 이내에 끝나는 Thread 작업이라고 생각하면 될 듯 하다. 오랜 작업이 필요한 Thread 작업은 Thread 를 이용하라고 한다.
AsyncTask 규칙
AsyncTask 에 관해 중요한 규칙만 소개하고, 나머지 자세한 사항은 위의 링크를 참조하자. 규칙은 아래와 같다.- The AsyncTask class must be loaded on the UI thread. This is done automatically as of
JELLY_BEAN
. - The task instance must be created on the UI thread.
execute(Params...)
must be invoked on the UI thread.- Do not call
onPreExecute()
,onPostExecute(Result)
,doInBackground(Params...)
,onProgressUpdate(Progress...)
manually. - The task can be executed only once (an exception will be thrown if a second execution is attempted.)
AsyncTask 를 new 하고 execute() 하는 곳이 UI thread 여야 한다.라는 것으로 정리될 수 있겠다.
AsyncTask 함수의 type
참고로 AsyncTask 에서 변수type을 정의해줘야 한다. 이 변수들은- onPreExecute(),
- onPostExecute(Result),
- doInBackground(Params...),
- onProgressUpdate(Progress...) : publishProgress(value); 를 doInBackground()에서 호출하면 onProgressUpdate()가 호출된다.
댓글 없음:
댓글 쓰기