Professional Documents
Culture Documents
AsyncTask permite el uso adecuado y fácil del subproceso de interfaz de usuario. Esta clase
le permite realizar operaciones en segundo plano y publicar resultados en el subproceso de
interfaz de usuario sin tener que manipular subprocesos y / o controladores.
AsyncTask está diseñado para ser una clase auxiliar alrededor de Thread and Handler y no
constituye un marco de threading genérico. AsyncTasks debería usarse idealmente para
operaciones cortas (unos pocos segundos como máximo). Si necesita mantener los hilos
en ejecución durante largos periodos de tiempo, se recomienda encarecidamente que utilice
las diversas API proporcionadas por el paquete java.util.concurrent como Executor ,
ThreadPoolExecutor y FutureTask .
Uso
AsyncTask debe ser subclasificado para ser utilizado. La subclase anulará al menos un
método ( doInBackground(Params...) ( doInBackground(Params...) ), y la mayoría de las
veces anulará una segunda ( onPostExecute(Result) .
Los 4 pasos
Cuando se ejecuta una tarea asíncrona, la tarea pasa por 4 pasos:
Observabilidad de la memoria
AsyncTask garantiza que todas las llamadas de devolución de llamada estén sincronizadas
de tal forma que las siguientes operaciones sean seguras sin sincronizaciones explícitas.
Orden de ejecución
Cuando se introdujo por primera vez, las AsyncTasks se ejecutaron en serie en una única
cadena de fondo. Comenzando con DONUT , esto se cambió a un conjunto de subprocesos
que permite que varias tareas funcionen en paralelo. Comenzando con HONEYCOMB , las
tareas se ejecutan en un único hilo para evitar errores de aplicación comunes causados por
la ejecución paralela.
Resumen
Clases anidadas
enum AsyncTask.Status
Indica el estado actual de la tarea.
Campos
public static final Executor SERIAL_EXECUTOR
Un Executor que ejecuta las tareas de a una por orden serial.
public static final Executor THREAD_POOL_EXECUTOR
Un Executor que se puede usar para ejecutar tareas en paralelo.
Constructores públicos
AsyncTask ()
Crea una nueva tarea asincrónica.
Métodos públicos
final boolean cancel (boolean mayInterruptIfRunning)
Intenta cancelar la ejecución de esta tarea.
final AsyncTask <Params, Progress, Result> execute (Params... params)
Ejecuta la tarea con los parámetros especificados.
static void execute ( Runnable runnable)
Versión de conveniencia de execute(Object) para usar con un objeto Runnable simple.
final AsyncTask <Params, Progress, Result> executeOnExecutor ( Executor exec,
Params... params)
Ejecuta la tarea con los parámetros especificados.
final Result get (long timeout, TimeUnit unit)
Espera, si es necesario, a lo sumo el tiempo dado para que se complete el cálculo, y luego
recupera su resultado.
final Result get ()
Espera si es necesario para que se complete el cálculo, y luego recupera su resultado.
final AsyncTask.Status getStatus ()
Devuelve el estado actual de esta tarea.
final boolean isCancelled ()
Devuelve verdadero si esta tarea se canceló antes de que se completara normalmente.
Métodos protegidos
abstract Result doInBackground (Params... params)
Reemplace este método para realizar un cálculo en una cadena de fondo.
void onCancelled ()
Las aplicaciones deben sobrescribir preferiblemente en onCancelled(Object) .
void onCancelled (Result result)
Se ejecuta en el subproceso de UI después de que se invoca cancel(boolean) y
doInBackground(Object[]) finaliza.
void onPostExecute (Result result)
Se ejecuta en el subproceso de interfaz de usuario después de doInBackground(Params...)
.
void onPreExecute ()
Se ejecuta en el subproceso de interfaz de usuario antes de doInBackground(Params...) .
void onProgressUpdate (Progress... values)
Se ejecuta en el subproceso de UI después de que se publishProgress(Progress...) .
final void publishProgress (Progress... values)
Este método se puede invocar desde doInBackground(Params...) para publicar
actualizaciones en el subproceso de UI mientras el cómputo en segundo plano aún se está
ejecutando.
Métodos heredados
Campos
SERIAL_EXECUTOR
THREAD_POOL_EXECUTOR
Constructores públicos
AsyncTask
Parámetros
mayInterruptIfRunning boolean : true si el hilo que ejecuta esta tarea debe ser
interrumpido; de lo contrario, las tareas en progreso pueden completarse.
Devoluciones
boolean falso si la tarea no pudo ser cancelada, normalmente porque ya se ha
completado normalmente; cierto de lo contrario
ejecutar
Nota: esta función programa la tarea en una cola para una única cadena de subprocesos o
un grupo de subprocesos dependiendo de la versión de la plataforma. Cuando se introdujo
por primera vez, las AsyncTasks se ejecutaron en serie en una única cadena de fondo.
Comenzando con DONUT , esto se cambió a un conjunto de subprocesos que permite que
varias tareas funcionen en paralelo. Al iniciar HONEYCOMB , las tareas vuelven a
ejecutarse en un solo subproceso para evitar los errores de aplicación comunes causados
por la ejecución paralela. Si realmente desea la ejecución en paralelo, puede usar la
executeOnExecutor(Executor, Params...) de este método con
THREAD_POOL_EXECUTOR ; sin embargo, consulte los comentarios sobre advertencias
sobre su uso.
Parámetros
params Params : los parámetros de la tarea.
Devoluciones
AsyncTask <Params, Progress, Result> Esta instancia de AsyncTask.
Lanzamientos
IllegalStateException Si getStatus() devuelve RUNNING o FINISHED .
ejecutar
Parámetros
runnable Runnable
executeOnExecutor
Parámetros
exec Executor : el ejecutor a usar. THREAD_POOL_EXECUTOR está disponible como
un conveniente grupo de subprocesos para todo el proceso para tareas que están
débilmente acopladas.
params Params : los parámetros de la tarea.
Devoluciones
AsyncTask <Params, Progress, Result> Esta instancia de AsyncTask.
Lanzamientos
IllegalStateException Si getStatus() devuelve RUNNING o FINISHED .
obtener
Parámetros
timeout long : tiempo de espera antes de cancelar la operación.
unit TimeUnit : la unidad de tiempo para el tiempo de espera.
Devoluciones
Result El resultado calculado.
Lanzamientos
CancellationException Si el cálculo fue cancelado.
ExecutionException Si el cálculo arrojó una excepción.
InterruptedException Si el hilo actual fue interrumpido mientras esperaba.
TimeoutException Si se agotó el tiempo de espera agotado.
obtener
Resultado get ()
Espera si es necesario para que se complete el cálculo, y luego recupera su resultado.
Devoluciones
Result El resultado calculado.
Lanzamientos
CancellationException Si el cálculo fue cancelado.
ExecutionException Si el cálculo arrojó una excepción.
InterruptedException Si el hilo actual fue interrumpido mientras esperaba.
obtener el estado
AsyncTask.Status getStatus ()
Devuelve el estado actual de esta tarea.
Devoluciones
AsyncTask.Status El estado actual.
está cancelado
boolean isCancelled ()
Devuelve verdadero si esta tarea se canceló antes de que se completara normalmente. Si
llama a cancel(boolean) en la tarea, el valor devuelto por este método debe verificarse
periódicamente desde doInBackground(Object[]) para finalizar la tarea lo antes posible.
Devoluciones
boolean true si la tarea se canceló antes de completarse
Métodos protegidos
doInBackground
Resultado doInBackground (Params ... params)
Reemplace este método para realizar un cálculo en una cadena de fondo. Los parámetros
especificados son los parámetros pasados para execute(Params...) por la persona que
llama de esta tarea. Este método puede llamar a publishProgress(Progress...) para publicar
actualizaciones en el hilo de UI.
Este método puede tardar varios segundos en completarse, por lo que solo debe invocarse
desde un hilo de trabajo.
Parámetros
params Params : los parámetros de la tarea.
Devoluciones
Result Un resultado, definido por la subclase de esta tarea.
onCancelled
void onCancelled ()
Las aplicaciones deben sobrescribir preferiblemente en onCancelled(Object) . Este método
es invocado por la implementación predeterminada de onCancelled(Object) .
onCancelled
void onCancelled (resultado del resultado)
Se ejecuta en el subproceso de UI después de que se invoca cancel(boolean) y
doInBackground(Object[]) finaliza.
Parámetros
result Result : el resultado, si lo hay, calculado en doInBackground(Object[]) , puede ser
nulo
onPostExecute
void onPostExecute (resultado del resultado)
Se ejecuta en el subproceso de interfaz de usuario después de doInBackground(Params...)
. El resultado especificado es el valor devuelto por doInBackground(Params...) .
Parámetros
result Result : el resultado de la operación calculada por doInBackground(Params...) .
onPreExecute
void onPreExecute ()
Se ejecuta en el subproceso de interfaz de usuario antes de doInBackground(Params...) .
Parámetros
values Progress : los valores que indican el progreso.
publicarProgreso
void publishProgress (Progreso ... valores)
Este método se puede invocar desde doInBackground(Params...) para publicar
actualizaciones en el subproceso de UI mientras el cómputo en segundo plano aún se está
ejecutando. Cada llamada a este método activará la ejecución de
onProgressUpdate(Progress...) en el hilo de la interfaz de usuario.
onProgressUpdate(Progress...) no se onProgressUpdate(Progress...) si la tarea se ha
cancelado.
Este método puede tardar varios segundos en completarse, por lo que solo debe invocarse
desde un hilo de trabajo.
Parámetros
values Progress : los valores de progreso para actualizar la UI con.