2013-10-03 171 views
1

我在網上搜索過,但我只找到用戶希望在asynctask中顯示對話框的例子:protected void onPreExecute()。Android:沒有顯示對話框的Asynctask

{ 
          super.onPreExecute(); 
          pDialog = new ProgressDialog(NumericoComercial.this); 
          pDialog.setMessage("Actualizando ..."); 
          pDialog.setIndeterminate(false); 
          pDialog.setCancelable(true); 
          pDialog.show(); 
         } 

我想知道的是,如果這是可以做到的沒有的AsyncTask顯示onPreExecute()和onPostExecute()作爲通常做任何對話。

我遇到了一些問題,使用asynctask關於窗口泄漏錯誤的對話框。我試過的東西並沒有像下面的例子那樣向Pre和Post Actions添加任何對話框。

class UpdateCandidatos extends AsyncTask<String, String, String> { 


        @Override 
        protected void onPreExecute() { 

        } 


protected void onPostExecute(String file_url) { 

        } 
       } 

可能是使用此方法的任何錯誤,例如活動完成時的示例?

謝謝

+0

您可以更詳細地解釋它嗎? –

+0

我已經編輯它,但我的意思是,如果是建議在Asynctask中使用對話框以減少錯誤,或者如果我不能沒有任何問題地包含它們。 – Katherine99

回答

1

onPreExecute()onPostExecute()不需要方法,那麼所有的擴展Aynctask你在這些方法中編寫的東西(對話框,ProgressDialog等)對於你班級的正確工作是不必要的。

class UpdateCandidatos extends AsyncTask<String, String, String> { 

    protected Long doInBackground(String... urls) { 
     //add here your background work 
    } 

} 

這是一個非常簡單的,完全分叉AsyncTask,在後臺沒有顯示對話框做「東西」。

注意:您將不得不根據您的應用程序的生命週期來處理任務

+0

嗨羅伯託謝謝你的解釋,我已經刪除了這兩種方法。 – Katherine99

+0

不客氣^^ –

1

我建議您取消異步任務在你的onPause()方法。這樣,如果您的活動關閉,異步任務不會嘗試發佈任何數據,並且onPostExecute不會被調用。嗯,你不應該有onPostExecute()有任何錯誤,你可以使用異步任務,而不顯示任何數據,它不是強制性的。你甚至都不需要@override該功能,只要把太虛我的聲明(...延伸的AsyncTask < ...,...,太虛>)

+0

然後,不顯示任何對話框不會引發應用程序崩潰,對吧? – Katherine99

+1

那就對了。但是在關閉活動時,我仍然不會忘記取消你的AsyncTask,因爲onPostExecute是在UI線程中執行的,即使你不會做任何UI修改,它可能會導致應用程序失敗,因爲你永遠無法知道會發生什麼在背景中。 – JanBo