제가 지금 구글맵 API를 사용하는데,
파일을 로드해서 화면에 뿌리는 작업을 AsyncTask로 돌렸습니다.
파일 로드 부분을 doInBackground에 넣었구요.
요안에서 for문을 돌리고 for문안에서
데이터를 가지고 publishProgress 를 호출하고
onProgressUpdate 에서 화면에 마커를 찍습니다.
그런데 문제는 속도가 너무 빨라서
onProgressUpdate 한번 돌기 전에 doInBackground 안의 for문이 다시 publishProgress를 호출하는 것 같아요.
실행순서가
doInBackground for문 내부에서 publishProgress호출-> onProgressUpdate 수행 -> onProgressUpdate 완료 -> doInBackground에서 publishProgress호출
이렇게 돌아가야 되는데
doInBackground for문 내부에서 publishProgress호출 -> onProgressUpdate 수행 -> doInBackground에서 publishProgress호출 -> onProgressUpdate 완료
이렇게 되는것 같아요.
테스트는..
doInBackground에서 publishProgress 바로 아래 부분에 Thread.sleep(30)을 넣어주니 데이터가 정상적으로 다 나오네요.
대신 속도가 엄청 느려지죠..
30 대신 20이나 10을 넣으면 부분 부분 데이터가 겹치구요.
글이 좀 긴데요..
제가 궁금한 것은 for문 안에서
onProgressUpdate가 다 끝날 때까지 기다렸다가 publishProgress를 호출 하는법을 모르겠어요.
뭔가 있을거 같긴 한데... 조언좀 부탁드립니다.