2012-05-08 4 views
6

바코드 디코더는 바코드가 인터넷 스캔을 통해 멀티플 API로 바뀌면 디코드됩니다. 문제는 필자가 XML 파싱을 연결해야한다는 것이고, 내가 제대로하고 있는지 알지 못합니다.AsyncTask 안의 Android AsyncTask

그래서 일단 바코드가 스캔되면 내 프로그램은 API를 통해 제품 이름을 검색하는 ASyncTask를 호출합니다. 이름이 있으면 다른 ASyncTask를 호출해야합니다. 다른 사람의 onPostExecute()에있는 ASyncTaks를 인스턴스화하여 이것이 가능하다는 것을 알고 있지만 상자 안에 상자와 비슷하기 때문에 이것이 잘못되었다고 생각합니다. 내 주 활동 내에서 두 번째 ASyncTask를 인스턴스화하는 것이 더 좋고/더 좋지 않으며 첫 번째 ASyncTask가 완료 될 때까지 기다려야합니까?

(영어는 제 1 차 언어가 아니기 때문에 제 스스로를 분명히 할 수 있기를 바랍니다).

+3

2 가지 작업을 사용하는 이유는 무엇입니까? 첫 번째 작업 doInBackground에서 원하는 것을하지 않으시겠습니까? – Renard

+2

기본 언어가 아닐 수 있으므로 언어를 사용해서는 안됩니다. – waqaslam

+0

@Renard doInBackground에서 모든 것을 허용하는 것이 너무 지저분 해 보입니다. 내 첫 번째 ASyncTask 먼저 처리해야 할 다른 결과를 반환 할 수 있으며 결과에 따라 더 많은 구문 분석을 수행하십시오. 그래서 다른 ASyncTask를 시작하면 여러 당사자의 코드를 나눌 수 있고 더 명확하게 만들 수 있습니다. – MagicMicky

답변

17

나는 그것이 두 작업을 혼합하는 것은 나쁜 논리적 인 생각, 첫 AsyncTask를의 onPostExecute에서 두 번째 AsyncTask를 시작하는 데 절대적으로 합법적 인 것 같아요 "오프 스프링은"말했듯이, - 당신이 그것을 직접 onPostExecute 자체 내부에하지 않으려면,

활동 및 호출을 실행하는 핸들러를 설정 "당신은 그들을 분리 보관 돼했습니다" 이 처리기는 onPostExecute입니다.

마지막 사항 - 논리가 많은 경우 별도의 파일로 이동하고 동일한 파일에 모두 보관하지 마십시오.

+0

좋아, 나는 내 액티비티에서 핸들러를 설정하고'onPostExecute()'에서 핸들러를 호출하려고 시도 할 것이다. 그리고 여러 파일, 심지어 여러 패키지가 있습니다. 이것은 내 첫 번째 진짜 안드로이드 프로젝트입니다, 나는 그것을 가능한 한 깨끗하게하고 싶습니다! – MagicMicky

+0

- 행운을 빈다. :) – MByD