안녕하세요.
현재 doInBackground에서 특정 뷰를 캡쳐해서 publishProgress로 해당 사실을 알립니다.
이 과정을 루프를 돌면서 9번정도 하는데..문제는
onProgressUpdate에서 UI작업이 완료되기 전에 doInBackground에서 다음 루프를 돌아버리기 때문에 캡쳐가 제대로 되지 않습니다.
제가 원하는 건 onProgressUpdate 에서 UI작업이 완료되면 doInBackground의 다음 루프를 돌게끔 하고 싶은데 잘 안되네요.. Async Task를 일시정지하는 방법은 없나요?
현재는 아래와 같은 로직으로 해놨는데..맘에 안들어요 ㅠㅠ
고수님들이 도움 부탁드립니다.
for(int i=0; i < miniMapInfo.length; i++){
beCaptured = true;
publishProgress(null, (int) (((float) (i + 5) / stepMax) * progressBar.getMax()), i, 0);
while(true){
if(!beCaptured){
miniMapView.setDrawingCacheEnabled(true);
miniMapBitmap = miniMapView.getDrawingCache();
stream = new ByteArrayOutputStream();
miniMapBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
miniMapView.setDrawingCacheEnabled(false);
beCaptured = true;
publishProgress(null, null, i, 1);
while(true) {
if(!beCaptured){
break;
}else{
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if( ((double)( System.currentTimeMillis() - captureStartTime)) >= 3000 ){
break;
}
}
break;
}else{
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if( ((double)( System.currentTimeMillis() - captureStartTime)) >= 20000 ){
break;
}
}
}
beCaptured = false;
publishProgress(R.string.load_msg_complete, progressBar.getMax());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return progressBar.getMax();
}