5

내가 찾고있는 것은 Asyntask 내부의 여러 스레드를 관리하는 방법을 찾는 것입니다.동기화 작업 내 스레드 수를 관리하는 방법

로컬 데이터베이스를 서버 업데이트와 동기화해야합니다. 이것은 페이징을 사용하여 검색 할 수있는 큰 데이터 일 수 있습니다.

스레드가 생성 될 때까지 진행 대화 상자를 표시 할 수 있도록 asyntask 내부의 루프에서 스레드를 생성하는 것을 선호하는 방법을 누군가에게 알려줄 수 있습니까?

& 로컬 데이터베이스 개체 & 다른 스레드를 실행하는 동안 해당 데이터베이스에서 데이터를 다운로드/로컬 데이터베이스에 & 저장/업데이트에서 데이터를 다운로드하는 약간 걱정입니다.

참고 : 단일 서버 호출로 서버의 모든 데이터를 다운로드 할 수 없습니다.

미리 감사드립니다.

답변

2

장기 실행 작업의 경우 AsyncTask 대신 IntentService를 사용해야합니다. IntentService는 UI 독립적이므로 백그라운드에서 실행할 수 있습니다. UI를 업데이트하기 위해 브로드 캐스트 인 텐트를 보낼 수 있습니다. DB 동기화를 위해 IntentService를 사용합니다. 서버에서 데이터를 얻습니다. 구문 분석하는 동안 일괄 업데이트를 만든 다음 일괄 업데이트로 로컬 DB를 업데이트합니다.

+0

하지만 어떻게 반복 서버 호출 시간을 줄일 수 있습니까? 한 번에 여러 통화를 어떻게 수행 할 수 있습니까? –

0
Try this ,  

You can set a static variable that is initialized to zero, and it is incremented 
by each thread .check this variable in asynctask,if it is equal to the no: of threads 
in your class finish it.Simple But works