public class ProgressAsyncTask extends AsyncTask<ProgressBar, Integer, Integer> {
protected ProgressBar progressBar;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Integer doInBackground(ProgressBar... params) {
progressBar = params[0];
publishProgress(1, 100);
try {
while(progressBar.getProgress() < progressBar.getMax()) {
if(!isShowing()) {
break;
}
Thread.sleep(500);
publishProgress(0 , 10);
}
} catch(InterruptedException ie) {
Log.e("CommonProgressPopup", "AsyncTask is InterruptedException");
ie.printStackTrace();
}
return 1;
}
@Override
protected void onProgressUpdate(Integer... params) {
if(params[0] == 1) {
progressBar.setMax(params[1]);
}else if(params[0] == 0) {
progressBar.incrementProgressBy(params[1]);
}
Log.e("CommonProgressPopup", "onProgressUpdate = " + Integer.toString(progressBar.getProgress()) + "%");
}
@Override
protected void onPostExecute(Integer result) {
if(result == 1) {
Toast.makeText(mContext.getApplicationContext(), "프로그래스바" + Integer.toString(progressBar.getProgress()) + "%", Toast.LENGTH_SHORT).show();
}
Log.e("CommonProgressPopup", "onPostExecute = " + Integer.toString(result) + "%");
super.onPostExecute(result);
}
@Override
protected void onCancelled(Integer result) {
Log.e("CommonProgressPopup", "AsyncTask is onCancelled");
super.onCancelled();
}
}
안녕하세요 AsyncTask를 통해서 프로그래스 바를 구현해보고 있습니다
그런데 프로그래스바가 꽉차면 토스트를 띄워 100%를 표현하고
중간에 백키등으로 종료되면 해당 진척도까지만 % 표현해주고 싶어서 코드를 짜보았는데... 100% 일때는 정상으로 나오는데
100% 가 아닐경우에는 0 또는 10으로만 출력이 됩니다...
혹시 이유를 알 수 있을까요...
소스코드 첨부드립니다