2012-10-03 10 views
5

¿Alguien podría decirme qué está mal aquí?¿Cómo funciona 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 
    } 
} 

La clase anterior no depende de los valores de retorno. Entonces onPostExceute() simplemente ejecuta códigos escritos allí.

¡Gracias de antemano!

+0

'Void' y' void' son diferentes, consulte http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.0_r1/android/ os/AsyncTask.java –

+0

Consulte estos sitios, 1. [Asynchronous Task_tutorial] (http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/) 2. [Ejemplo con Explicación de la tarea asíncrona] (http://labs.makemachine.net/2010/05/android-asynctask-example/) – Aerrow

Respuesta

15

simplemente devuelva nulo.

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

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

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

Creo que tienes que usar "return null;" en lugar de solo "devolver", como Void es una clase alrededor del valor "vacío" habitual.

0

doInBackGround declaraciones de valor nulo

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

marca esta Android dev doc para la tarea asíncrona en Andorid

5

En doInBackGround nula rentabilidad, como Void es un objeto (no hace = 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

También debe explicar ** por qué ** tiene que devolver 'null' allí. – Luksprog

+0

De acuerdo con @Luksprog, esta no es una respuesta. –

+0

¡Funciona de esa manera! Bueno, si esto no es una respuesta, entonces, ¿cuál es la correcta? – Renjith

4

AsyncTask funciona así

OnPreExecute -> doInBackGround -> onPostExecute

progressUpdates Despreciando etc, tan pronto doInBackGround es completa, el control pasa a onPostExecute. Un simple return interrumpe este flujo y causa el error. Para resolver esto, reemplace con return null Dado que es un vacío. Los parámetros de declaración de retorno se pasan a onPostExecute como parámetro, donde puede usarlo para ver si ha sido exitoso.

Cuestiones relacionadas