studio publishprogress parameter oncancelled example cancel asynctask android arguments android-asynctask

publishprogress - execute asynctask android



¿Qué argumentos se pasan a AsyncTask<arg1, arg2, arg3>? (4)

No entiendo qué se supone que debo poner aquí y dónde terminan estos argumentos. ¿Qué debería poner exactamente, y dónde exactamente irá? ¿Debo incluir los 3 o puedo incluir 1,2,20?


Consulte los siguientes enlaces:

  1. http://developer.android.com/reference/android/os/AsyncTask.html
  2. http://labs.makemachine.net/2010/05/android-asynctask-example/

No puede pasar más de tres argumentos, si desea pasar solo 1 argumento, entonces use void para los otros dos argumentos.

1. private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> 2. protected class InitTask extends AsyncTask<Context, Integer, Integer>

Una tarea asíncrona se define mediante un cálculo que se ejecuta en un subproceso en segundo plano y cuyo resultado se publica en el subproceso de la interfaz de usuario. Una tarea asincrónica está definida por 3 tipos genéricos, llamados Params, Progress y Result, y 4 pasos, llamados onPreExecute, doInBackground, onProgressUpdate y onPostExecute.

KPBird


La documentación de Android de Google dice que:

Una tarea asincrónica está definida por 3 tipos genéricos, llamados Params, Progress y Result, y 4 pasos, llamados onPreExecute, doInBackground, onProgressUpdate y onPostExecute.

Tipos genéricos de AsyncTask:

Los tres tipos utilizados por una tarea asincrónica son los siguientes:

Params, the type of the parameters sent to the task upon execution. Progress, the type of the progress units published during the background computation. Result, the type of the result of the background computation.

No todos los tipos son siempre utilizados por una tarea asincrónica. Para marcar un tipo como no utilizado, simplemente use el tipo Void:

private class MyTask extends AsyncTask<Void, Void, Void> { ... }

Puede consultar más detalles: http://developer.android.com/reference/android/os/AsyncTask.html

O puede aclarar cuál es el papel de AsyncTask al referirse al Blog de Sankar-Ganesh

Bueno, la estructura de una clase AsyncTask típica es la siguiente:

private class MyTask extends AsyncTask<X, Y, Z> protected void onPreExecute(){ }

Este método se ejecuta antes de iniciar el nuevo subproceso. No hay valores de entrada / salida, así que simplemente inicialice las variables o lo que sea que crea que necesita hacer.

protected Z doInBackground(X...x){ }

El método más importante en la clase AsyncTask. Debe colocar aquí todas las cosas que desea hacer en segundo plano, en un hilo diferente del principal. Aquí tenemos como valor de entrada una matriz de objetos del tipo "X" (¿Ves en el encabezado? Tenemos "... extends AsyncTask" Estos son los TIPOS de los parámetros de entrada) y devuelve un objeto del tipo "Z".

protected void onProgressUpdate(Y y){ }

Este método se llama utilizando el método publishProgress (y) y generalmente se usa cuando desea mostrar cualquier progreso o información en la pantalla principal, como una barra de progreso que muestra el progreso de la operación que está haciendo en segundo plano.

protected void onPostExecute(Z z){ }

Este método se invoca después de que se realiza la operación en segundo plano. Como parámetro de entrada, recibirá el parámetro de salida del método doInBackground.

¿Qué pasa con los tipos X, Y y Z?

Como se puede deducir de la estructura anterior:

X – The type of the input variables value you want to set to the background process. This can be an array of objects. Y – The type of the objects you are going to enter in the onProgressUpdate method. Z – The type of the result from the operations you have done in the background process.

¿Cómo llamamos a esta tarea desde una clase externa? Solo con las siguientes dos líneas:

MyTask myTask = new MyTask(); myTask.execute(x);

Donde x es el parámetro de entrada del tipo X.

Una vez que tenemos nuestra tarea en ejecución, podemos averiguar su estado desde "afuera". Usando el método "getStatus ()".

myTask.getStatus();

y podemos recibir el siguiente estado:

EJECUTANDO : indica que la tarea se está ejecutando.

PENDIENTE - Indica que la tarea aún no se ha ejecutado.

ACABADO - Indica que onPostExecute (Z) ha terminado.

Consejos sobre el uso de AsyncTask

  1. No invoque manualmente los métodos onPreExecute, doInBackground y onPostExecute. Esto es hecho automáticamente por el sistema.

  2. No puede llamar a una AsyncTask dentro de otra AsyncTask o Thread. La llamada de la ejecución del método debe realizarse en el subproceso UI.

  3. El método onPostExecute se ejecuta en el subproceso UI (aquí puede llamar a otro AsyncTask!).

  4. Los parámetros de entrada de la tarea pueden ser una matriz de Objetos, de esta manera puede colocar los objetos y tipos que desee.


Llego demasiado tarde a la fiesta pero pensé que esto podría ayudar a alguien.


  • en resumen, hay 3 parámetros en AsyncTask

    1. parámetros para el uso de entrada en DoInBackground (String ... params)

    2. parámetros para mostrar el estado del progreso de uso en OnProgressUpdate (String ... estado)

    3. parámetros para el uso del resultado en OnPostExcute (String ... result)

    Nota: - [El tipo de parámetros puede variar según sus requisitos]