어싱크테스크에서 httpPost를 통해 파일을 다운받습니다.
총 크기는 400KB 정도 나오고
다운받은 크기를 체크해서
다운받는동안 현재 진행 정도를 표시해주려고합니다.
프로그래스바는 다이얼로그 안에 있고, 다운로드 버튼을 누르면 어싱크테스크가 동작하면서
커스텀 다이얼로그가 팝업되고, 다운로드를 진행합니다.
다이얼로그에 떠 있는 ProgressBar 를 down_progress로 선언 한 뒤
어싱크테스크 내에서 down_progress.setMax(크기) 로 주고
setProgress를 while문에 넣어 진행정도를 입력했는데
크기는 설정이 된것같습니다. setMax 후 바로 getMax 하면 400KB정도가 나옵니다.
그런데 setProgress가 안되는것같습니다. 그냥 저절로 계속 차는걸 반복합니다.
왜이런가요 ㅠ setProgress도 안먹히고 프로그레스는 자기혼자 계속 올라갔다가 초기화되고 다시 올라가고 합니다
0부터 max까지 진행하는데 약 4초가량이 걸리는것같습니다.
public void downloadProgress() {
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.download_dialog, null);
tv_downState = (TextView) view.findViewById(R.id.tv_download_state);
appdown_progress = (ProgressBar) view.findViewById(R.id.web_download_progressbar);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext)
.setView(view)
.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
downDialog = builder.create() ;
downDialog.show() ;
}
이렇게 넣고
buffer = new byte[(int)fileSize];
appdown_progress.setMax((int)fileSize);
while (true) {
int length = is.read(buffer, offset, 9048);
offset += length;
appdown_progress.setProgress(offset) ;
if (offset >= fileSize) break;
SystemClock.sleep(5L) ;
}
이렇게 사용하는데 잘 안되네요 .