2012-03-20 30 views
0

我在如何在主要使用progressDialog的AsyncTask上實現「創建加載屏幕」的兩難處境。關於用於創建加載屏幕的AsyncTask

我在做什麼是我有一個方法,不需要輸入,只顯示一個textview。

私有類DownloadFilesTask擴展的AsyncTask {

那麼,我的方法做簡直是像1 + 1 = 2,但在存儲,然後得到顯示上一個TextView一個giganormous串的更復雜的方式。

所以我的問題是如何在長時間加載之前獲得進度對話框的結果?

+0

如果下面提供的答案沒有真正回答你的問題,那麼描述是非常不明確的 - 那麼你應該重新設計你的問題,也許提供一些代碼片段來幫助我們理解你想要達到的目標。 – Egor 2012-03-20 21:43:57

回答

2
private progressDialog pd; 
public void runMethod(){ 
new doStuuff.execute(); 
} 


private Class doStuff extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected Void doInBackground(Void... params) { 
//Everything in your code except for anything that is xml or relates with any view. Mostly calculations 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
//Your main background view code ends up falling here 
      pd.dismiss(); 
     } 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
//Your optional view and where it starts 
pd = ProgressDialog.show(View_Book_As_Whole.this, "Loading", "Please wait..."); 
     } 

} 

我當時太小氣,不理解這個概念,但是一旦你理解它就相對容易。 onPreExecute()意味着它在任何事情之前運行,並且它首先優先,然後轉到doInBackground(),然後onPostExecute()它運行最後的任務。這全部在UI的背景中起作用。

4

Android已經有一個progress dialog class內置。我建議使用它,除非有什麼不適合你的需求。

+0

我想要的是能夠在活動加載時首先顯示進度對話框。然而,它與整個事件加載的實際事件同時顯示。 – sdfwer 2012-03-21 13:17:27