2011-10-07 175 views
0

在我的應用程序中,點擊一個按鈕,應用程序會執行一些處理,通過網絡發送一些數據,然後停止。由於需要一些時間,我嘗試了一個進度條。進度條的代碼位於按鈕的onclick監聽器的開始處。在進度條碼之後,通過網絡進行處理和發送數據。 但進度條根本不可見。我是否需要在單獨的線程中顯示進度條?按鈕點擊進度條

這是我用來顯示進度條

final ProgressDialog pd=new ProgressDialog(this); 
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
pd.setMessage("Please wait.."); 
pd.setCancelable(true); 
pd.setIndeterminate(true); 
pd.show(); 

回答

5

使用的,使用了後臺做過程中的AsyncTask類,你也可以顯示你的進度有

這裏是代碼的AsyncTask

簡單的片斷
class BackgroundProcess extends AsyncTask<Void,Void,Void>{ 
    private ProgressDialog progress; 
    public doInBackground(Void...arg){ 
     publishProgress(); 
     // do your processing here like sending data or downloading etc. 
    } 
    @Override 
    protected void onProgressUpdate(Void... values) { 
    super.onProgressUpdate(values); 
    progress = ProgressDialog.show(YourActivity.this, "", "Wait...");  
    } 
    @Override 
    protected void onPostExecute(Void result) { 
    super.onPostExecute(result); 
    if(progress!=null) 
     progress.dismiss(); 
    progress = null; 
    } 
} 

現在初始化並執行它在按鈕onclick這樣聽衆

new BackgroundProcess().execute(); 

現在progressdialog將發佈並出現在屏幕上,當進程完成後從onPostExecute()只是關閉進度對話框

+0

感謝pratik ..我會試試這個.. – kusi

+0

這工作得很好..謝謝很多.. – kusi

+0

歡迎您:-) – Pratik

0

我貼你的代碼我的應用程序,它工作得很好。你是從UI線程調用所有這些嗎?如果你正在做一些繁重的處理和數據傳輸,確保不要在UI線程上運行它。製作一個AsyncTask來處理網絡內容。

編輯:我把它移到它自己的線程,它不再工作,所以確保它被調用從UI線程。

+0

是的..我正在做UI線程本身的所有工作......並且有很多數據傳輸通過網絡發生..所以我猜,我將不得不作出和AsyncTask來實現工作..謝謝 – kusi