2012-04-04 20 views
1

我需要從ASyncTask中將值返回給主線程,所以我使用了get()方法,以便主線程等待後臺線程運行。Android ASyncTask在使用get()返回值時不會在onPreExecute()中顯示對話框

time = mFetchServerDate.execute().get(); 

但是在我的AsyncTask我有預期的時候,不使用get(),它的運作onPreExecute()方法的進度對話框打開,但是當我把它添加回來只是掛的應用程序,顯示幾分之一秒的對話框,然後返回主線程。

@Override 
protected void onPreExecute(){ 
    super.onPreExecute(); 
    pd = ProgressDialog.show(mContext, "", "", true, false); 
} 
+1

當你暫停負責顯示對話框的主線程時,它如何顯示?\ – ngesh 2012-04-04 08:26:51

+0

請不要在UI線程上使用get()。您可以使進度對話框不可取消或禁用ui元素,直到asyncTask完成。 – Renard 2012-04-04 08:28:45

+0

夠公平的,我最終不需要從服務器獲取日期 – 2012-05-25 08:03:11

回答

0

我不知道,如果你已經使用get()方法的AsyncTask其已經行不通了。

反正你可以用戶this.runOnUiThread(action);當你需要像AsyncTaks一樣更新線程中的UI時。