2011-04-14 8 views
2

어떻게 작동하는지 알고 싶습니다. 몇 번이나 설명서를 읽었지만 아이디어를 얻지 못했습니다.어떻게 확장합니까 AsyncTask <Void, Void, Long> 작업

어떤 경우에는 onPostExecute이 아무 것도하지 않는 것으로 나타났습니다.

누구든지 설명을 좀 해주실 수 있습니까?

답변

11

AsyncTaskThread에서 파생 된 클래스이며 UI Thread을 알리는 기능으로 백그라운드에서 간단하고 적절한 방법을 제공합니다.

class을 작성하려면 extends을 작성하고 유형 매개 변수를 정의해야합니다. 그들은 Params, ProgressResult입니다. 자세히 알아보기 here.

onPostExecute()doInBackground()이 실행 완료되면 호출되지만, onPostExecute()은 UI 스레드에서 실행됩니다. 따라서 작업이 완료되었음을 UI에 알릴 수 있습니다.

AsyncTask 사용 here의 예를 볼 수 있습니다.

+1

감사도 좋은 나는이 많은 도움이 될 것입니다 믿습니다! –

3

<Void, Void, Long> 부분은 Java에서 Generics이라고합니다. 원래의 코더가 "최종 사용자"가 선택할 유형에 상관없이이 코드를 사용하고자하는 클래스에 사용됩니다.

일반적으로 진행 대화 상자를 시작/중지하려면 onPre/PostExecute()을 사용하십시오.

당신은 당신이 onProgressUpdate()에서 일을 할 수 대화 진행없이 진행 중에 UI를 업데이트하려면 : 당신이있는 경우 (즉, 당신이 웹에서 이미지를로드하는 그들이로드되는로 표시)

을 진행률 표시 줄이있는 대화 상자를 사용하면 진행률 표시 줄을 업데이트하기 위해 모두 사용해야합니다.

+0

그래,하지만 Void, Void, Void를하면 onPostExecute는 아무 것도하지 않는다는 것을 알았습니다 ... –

+1

@ M.V : 그 메소드는'doInBackground()'에 의해 반환되는 것을 인수로 취합니다. 마지막'Void'는 당신이 값을 반환하지 않는다고 (합법적 인),'onPostExecute()'는 인자를 취하지 않는다고 말합니다. 그래도 불확실한 진행 대화 상자를 멈출 수는 있습니다. – bigstones

2

This post는 AsyncTask 개념을 다이어그램으로 멋지게 설명합니다!

0

{onPostExecute()}은 백그라운드 작업을 완료 한 후에 무언가를하고 싶을 때 사용됩니다 {(doInBackground())}.

예를 들어

,

start Progress Bar @ {onPreExecute()} 
running Progress Bar @ {doInBackground()} 
stop Progress Bar @ {onPostExecute()}