Cómo utilizar una clase asynctask en su aplicación para android

Un AsyncTask es lo que se utiliza cuando algo tarda demasiado tiempo durante el funcionamiento de la aplicación de Android. Por ejemplo, el usuario solicita una página web. Quién sabe cuánto tiempo se tarda en buscar la página? El servicio que aloja la página Web tenga un volumen alto. O el usuario podría estar en un tren que pasa a través de un túnel.

Todo tipo de cosas podrían retrasar la recuperación de la página. Y durante esta recuperación, el usuario podría querer hacer clic en los botones, desplazarse un documento, o hacer otra cosa que exige una respuesta de su aplicación.

No se puede detener el programa, mientras que su aplicación espera una página Web, obtiene una línea de tiempo de Twitter, o actualizaciones de estado de Twitter del usuario. Es por eso que codifique la solicitud de red dentro de una AsyncTask.

Android de AsyncTask es lo suficientemente versátil como para hacer frente a todo tipo de valores. De hecho, la documentación define una AsyncTask de esta manera:

android.os.AsyncTask

La definición tiene tres marcadores de posición de tipo genérico - Parámetros, Progreso, y Resultado. Al crear su propia AsyncTask, que “llenar los espacios en blanco”, especificando los tipos reales en lugar de Parámetros, Progreso, y Resultado.

Añadir un nuevo tweet

Para añadir un tweet en nombre del usuario, agarrar una Gorjeo objeto (la instancia que ha realizado con factory.getInstance ()), Y se llama a la instancia de estado de actualización método. Usted no desea que esta solicitud de red para interrumpir el flujo de su actividad, por lo que poner la solicitud dentro de una AsyncTask. El nombre de la tarea es MyAsyncTaskTweet. tres tipos genéricos de la tarea son los siguientes: Cuerda, Vacío, y Cuerda:

public class MyAsyncTaskTweetextends AsyncTask&ntegrada Cuerda, Vacío, Cuerdagt; {
  • El primer tipo ( Cuerda ) Representa un tweet de 140 caracteres.

    El código

    ejecutar (editTextTweet.getText (). toString ())

    agarra una cadena de caracteres de uno de los campos de texto de la actividad y pasa esa cadena a MyAsyncTaskTweet. Dentro MyAsyncTaskTweet, el doInBackground método llama a esa cadena pío [0] y utiliza esa pío [0] cadena para actualizar el estado del usuario.

    El parámetro a la estado de actualización método es un elemento de matriz. Eso es porque, en el doInBackground cabecera del método, Pío es un parámetro varargs. La palabra varargs significa “número variable de argumentos.” Puede pasar tantos valores de doInBackground como quiera. En el cuerpo del método, tratas Pío como si fuera una matriz común. El primero Pío valor es pío [0]. Si hubiera un segundo Pío valor, sería pío [1], y así.

  • El segundo tipo ( Vacío ) Representa un valor (o valores) que marcan el progreso del subproceso en segundo plano en la realización de sus trabajos.

    Puesto que no hay indicador de progreso, el nombre del segundo tipo es Vacío.

    En Java, el Vacío clase es una clase contenedora para el vacío valor. Puesto que en su agujero negro de la nada!

  • El tercer tipo ( Cuerda ) Representa una frase como ¡Éxito! o No se ha podido twittear.

    los doInBackground método encuentra la cadena asociada con cualquiera R.string.success, R.string.twitter_failure, o R.string.general_failure y devuelve esta cadena como su resultado. Entonces el onPostExecute método muestra esta cadena en la pantalla de editTextTweet campo.

Video: Android studio 30 | Barra de progreso y AsyncTask

Esta imagen resume la forma en nombres de tipo genérico influyen en los tipos de los métodos.

El uso de tipos de MyAsyncTaskTweet.
El uso de tipos de MyAsyncTaskTweet.

La imagen de abajo resume cómo los valores se mueven de un lugar a otro en el MyAsyncTaskTweet.

El flujo de valores en MyAsyncTaskTweet.
El flujo de valores en MyAsyncTaskTweet.

Obtener línea de tiempo de un usuario

Si usted ha visto una AsyncTask, que has visto ‘em todo! los MyAsyncTaskTimeline clase es casi idéntica a la MyAsyncTaskTweet. Las únicas diferencias son las siguientes:

  • En MyAsyncTaskTweet, el parámetro pasa a doInBackground se trata como un tweet. Pero en MyAsyncTaskTimeline, el parámetro pasa a doInBackground es un nombre de usuario. El código pasa este nombre de usuario para la getUserTimeline método.

  • En MyAsyncTaskTweet, el valor devuelto por doInBackground es un mensaje de éxito o fracaso. Pero en MyAsyncTaskTimeline, el valor devuelto por doInBackground es una cadena completa de tweets (una línea de tiempo).

El código en busca de línea de tiempo de un usuario ve algo como esto:

Lista de estados = null-estados = twitter.getUserTimeline (nombre de usuario [0]) -

Un tipo llamado Yusuke Yamamoto desarrolló Twitter4J (o, al menos, Yusuke Yamamoto fue el líder del proyecto Twitter4J), y en algún momento, el Sr. Yamamoto decidió que la getUserTimeline método devuelve una colección de twitter4J.Status objetos. (Cada twitter4J.Status instancia contiene un tweet.) Así que, para cumplir con el contrato establecido mediante una llamada al getUserTimeline método, el código declara estados a ser una colección de twitter4J.Status objetos.

Video: Android Studio Tutorial Español 1.7 | Crear Login y trabajar con multiples Activities Android

Unas líneas más adelante en el código, una mejorada para pasos comunicado a través de la colección de estados valores y añade el texto de cada valor a una cadena de resultado grande. El bucle se suma norte (Java carácter go-to-the-next-line) después de cada tweet para una buena medida. En el onPostExecute método, el código muestra la cadena de resultado grande en la pantalla de textViewTimeline campo.

En el segundo doInBackground método, el nombre completo twitter4j.Statusse utiliza. Esto se hace para distinguir el twitter4J.Status clase a partir de la propia Android AsyncTask.Status clase (una clase interna de la AsyncTask clase).

Un AsyncTask puede ser bastante complicado. Pero cuando se compara el Android de AsyncTask a las alternativas do-it-yourself de roscado, el AsyncTask idea no es mala en absoluto. De hecho, cuando se obtiene un poco de práctica y crear un poco de lo propio AsyncTask clases, que se acostumbran a pensar de esa manera. Todo el negocio comienza a sentir muy natural.

Artículos Relacionados