2012-10-03 88 views
5

有人能告訴我這裏出了什麼問題嗎?AsyncTask <String,Void,Void>如何工作?

public class BackgroungTask extends AsyncTask<String, Void, Void> { 

    public Void doInBackground(String... params) { 
     //tasks 
     return; //error occurs here! 
    } 

    public void onPostExecute(Void result) { 
     //codes 
    } 
} 

上面的類不依賴於返回值。所以onPostExceute()只需執行那裏寫的代碼。

在此先感謝!

+0

'Void'和'void'都不同,請參閱http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.0_r1/android/ os/AsyncTask.java –

+0

請參考本站,1. [Asynchronous Task_tutorial](http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/)2. [異步任務說明](http://labs.makemachine.net/2010/05/android-asynctask-example/) – Aerrow

回答

15

只是返回null。

public class BackgroungTask extends AsyncTask<String, Void, Void> { 

    public Void doInBackground(String... params) { 
     //tasks 
     return null; 
    } 

    public void onPostExecute(Void result) { 
     //codes 
    } 
} 
6

我認爲你必須使用「return null;」而不僅僅是「返回」,因爲Void是圍繞通常的「空白」值的類。

0

doInBackGround回報空值

public class BackgroungTask extends AsyncTask<String, Void, Void> { 
.... 
.... 
} 

檢查此Android dev doc在Andorid的

5

doInBackGround回報空異步的任務,因爲Void是一個對象(不=空隙)..

public class BackgroungTask extends AsyncTask<String, Void, Void> { 

public Void doInBackground(String... params) { 
    //tasks 
    return null; //error occurs here! 
} 

public void onPostExecute(Void result) { 
    //codes 
} 
} 
+1

您還應該解釋**爲什麼**必須在那裏返回'null'。 – Luksprog

+0

同意@Luksprog,這不是答案。 –

+0

它的工作方式!那麼,如果這不是一個答案,那麼什麼是正確的? – Renjith

4

AsyncTask像這樣工作

onPreExecute - > doInBackGround - > onPostExecute

忽略progressUpdates等,儘快doInBackGround完成後,就進入onPostExecute。簡單的返回會中斷此流程,從而導致錯誤。爲了解決這個問題,用替換返回null由於其無效。 return語句參數作爲參數傳遞給onPostExecute,您可以在其中使用它來查看它是否成功。

相關問題