Cómo utilizar AsyncTask para realizar operaciones asincrónicas en el subproceso de la interfaz de usuario
En primer lugar, debemos conocer la clase Android.os.AsyncTask:
* La clase de Android AsyncTask encapsula la comunicación entre subprocesos y proporciona un método de programación simple para permitir el procesamiento en segundo plano. Comunicación del hilo con el hilo de la interfaz de usuario: el hilo en segundo plano realiza tareas asincrónicas y notifica al hilo de la interfaz de usuario los resultados de la operación.
* AsyncTask es una clase abstracta. AsyncTask define tres tipos generales: parámetros, progreso y resultado.
* Params Parámetros de entrada que inician la ejecución de la tarea, como la URL de una solicitud HTTP.
* Progreso El porcentaje de tareas en segundo plano que se han ejecutado.
* Resultado El resultado final de la ejecución de la tarea en segundo plano, como cadena, número entero, etc.
*Aspecto.
* La ejecución de AsyncTask se divide en cuatro pasos, cada paso corresponde a un método de devolución de llamada y los desarrolladores deben implementar este método.
* 1) Heredar AsyncTask
* 2) Implementar uno o más de los siguientes métodos definidos en AsyncTask
* onPreExecute(), que se ejecutará Llamado por el hilo de la interfaz de usuario antes de las operaciones reales en segundo plano. Se pueden realizar algunos trabajos de preparación en este método, como mostrar una barra de progreso en la interfaz de usuario o crear instancias de algunos controles, lo cual no es necesario realizar en la implementación de este método.
* doInBackground(Params...) se ejecutará inmediatamente después de que se ejecute el método onPreExecute y se ejecute en un subproceso en segundo plano. Aquí se realizará un procesamiento en segundo plano que requiere mucho tiempo. Se puede llamar al método PublishProgress para actualizar el progreso de la tarea en tiempo real. Este método es abstracto y debe implementarse mediante subclases.
* onProgressUpdate(Progress...), después de llamar al método PublishProgress, el hilo de la interfaz de usuario llamará a este método para mostrar el progreso de la tarea en la interfaz, como a través de una barra de progreso.
* onPostExecute (Resultado), una vez completado doInBackground, el hilo de la interfaz de usuario llamará al método onPostExecute. El resultado del cálculo en segundo plano se pasará al hilo de la interfaz de usuario a través de este método y se mostrará al usuario en el. interfaz.
* onCancelled(), llamado cuando el usuario cancela el hilo. Se llama cuando el hilo principal llama a onCancelled().
Para utilizar la clase AsyncTask correctamente, se deben seguir las siguientes pautas:
1) La instancia de Task debe crearse en el hilo de la interfaz de usuario
2) Debe estar en Llamar al método de ejecución en el hilo de la interfaz de usuario
3) No llame manualmente a onPreExecute(), onPostExecute() o onPostExecute(). onPostExecute(Result), doInBackground(Params...), onProgressUpdate(Progress...) Estos métodos deben llamarse cuando se crea una instancia de la tarea en el subproceso de la interfaz de usuario.
4) La tarea solo se puede ejecutar una vez; de lo contrario, se generará una excepción cuando se llame varias veces.
Los parámetros del método doInBackground y onPostExecute deben corresponder entre sí. son los parámetros comunes declarados en AsyncTask Especificados en la lista, el primero es el parámetro aceptado por doInBackground y el segundo es el parámetro utilizado para mostrar el progreso.