2013-08-01 33 views
0

當我第一次使用我的應用程序時,我正在執行某些需要「隨機」時間才能完成的數據設置,而這種情況正在發生,我正在顯示進度與用戶對話,告訴他們發生了什麼並展示了一個旋轉輪,這些都是通過一個異步任務完成的,因爲許多文檔和指南認爲這是使用進度對話框的唯一方法。Android - 「同步」任務的進度對話框

但我的問題是我需要我的應用程序中的所有其他應用程序「等待」數據設置完成之前,它的業務,但仍然保持方便的對話框告訴用戶發生了什麼事情,即時通訊努力尋找去做這件事。

如果任何人有任何想法是偉大的。

+0

on post execute progress.cancel(); –

回答

1

您可以使用線程做數據設置後更新進度對話框,並處理完畢後工作線程結束..

查看下面

ProgressDialog pd = ProgressDialog.show(this,"Please Wait..", "Data Setup in  Progress..", false, true); 
pd.setCanceledOnTouchOutside(false); 
Thread tDataSetup = new Thread(
new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     //Insert the data setup code here.. 
    if(dataSetupDone) 
     handlerDataSetup.sendEmptyMessage(OPERATION_COMPLETED); 
    else 
     handlerDataSetup.sendEmptyMessage(OPERATION_NOT_COMPLETED); 
    } 
}); 
tDataSetup.start(); 

private Handler handlerDataSetup = new Handler() 
{ 
    @Override 
    public void handleMessage(Message msg) 
    { 
     if(pd.isShowing()) 
     { 
      pd.dismiss(); 
     } 

     if(msg.what == OPERATION_COMPLETED) 
      //Code after the data Setup done , to be implemented here.. 
     else if(msg.what == OPERATION_NOT_COMPLETED) 
      //Code if data setup fails.. 
    } 
}; 
0

像這樣的東西應該工作:

ProgressDialog progress = new ProgressDialog(this); 
progress.setTitle("Loading"); 
progress.setMessage("Wait while loading..."); 
progress.show(); 
// your vairiable time stuff here 
// To dismiss the dialog 
progress.dismiss(); 

,如果你需要完成一些工作,你可以這樣做

progress.setMessage("I have a new message now");