2013-08-05 2 views
6

내 응용 프로그램에서 나는 사용자가 버튼을 누른 다음 5 분을 기다려야합니다. 나는 이것이 끔찍한 소리가 난다는 것을 알고 있지만 그냥 따라 가라. 5 분 대기 시간의 남은 시간이 진행률 막대에 표시되어야합니다.asynctask를 사용하여 카운트 다운 진행률 표시 줄을 표시하는 방법은 무엇입니까?

카운트 다운에 텍스트보기가있는 CountDownTimer를 사용하고 있었지만 사장님이 더 좋아 보이는 것을 원했습니다. 따라서 진행률 표시 줄에 대한 추론.

+0

'setProgress()'를 사용하여 원하는대로 진행률을 설정할 수 있습니다. 업데이트 할 때마다 전화하십시오. – Geobits

+1

설정된 시간이 가짜 진행 표시 줄을 만드는 경우 ... 마지막 5 분의 GIF 일 수 있습니다. – NightSkyCode

+5

'AsyncTask'에 대한 문서에서 ... ** "AsyncTasks는 짧은 작업 (최대 몇 초)에 이상적으로 사용되어야합니다."** - 실제로 5 분의 AsyncTask를 실행해서는 안됩니다. – Squonk

답변

33

은 당신이 뭔가를 할 수 있습니다 ..

public static final int DIALOG_DOWNLOAD_PROGRESS = 0; 
private ProgressDialog mProgressDialog; 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DIALOG_DOWNLOAD_PROGRESS: 
     mProgressDialog = new ProgressDialog(this); 
     mProgressDialog.setMessage("waiting 5 minutes.."); 
     mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     mProgressDialog.setCancelable(false); 
     mProgressDialog.show(); 
     return mProgressDialog; 
    default: 
    return null; 
    } 
} 

그런 다음 진행 상황을 업데이트 할 비동기 작업을 쓰기 ... 이것은 당신의 목적을 해결해야하며 늘 심지어 UI 트레드을 차단

private class DownloadZipFileTask extends AsyncTask<String, String, String> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     showDialog(DIALOG_DOWNLOAD_PROGRESS); 
    } 

    @Override 
    protected String doInBackground(String... urls) { 
     //Copy you logic to calculate progress and call 
     publishProgress("" + progress); 
    } 

    protected void onProgressUpdate(String... progress) {   
    mProgressDialog.setProgress(Integer.parseInt(progress[0])); 
    } 

    @Override 
    protected void onPostExecute(String result) {   
     dismissDialog(DIALOG_DOWNLOAD_PROGRESS); 
    } 
} 

..

+0

귀하의 목적을 해결 한 경우 대답을 수락하십시오. 그것은 다른 사람들이 정답을 식별하는 데 도움이 될 것입니다. 덕분에 – Sushil

+1

AsyncTask의 두 번째 매개 변수를 Integer로 구문 분석 할 필요가없는 것보다 Integer로 변경하고 단순히 ""+ – Nepster

+3

을 사용하지 않고 단순히 publishProgress (진행) 만 작성하면됩니다. http://stackoverflow.com/questions/10285047/showdialog-deprecated-whats-the-alternative –

관련 문제