android - implement - iniciar la tarea asincrónica desde onhandleintent
hilos asynctask android (3)
¿Deberíamos comenzar una tarea asincrónica desde el método onHandleIntent()
de IntentService
? Leí que onHandleIntent()
ejecuta en el worker thread
así que ¿será seguro iniciar asyncTask
desde allí?
La clase AsyncTask se usa para proporcionar un mecanismo para lograr subprocesamiento múltiple, por lo que el hilo del evento no se colgará, pero como está utilizando el servicio, no debe usar AsyncTask en el Servicio, sino que puede usar subprocesos si es una tarea larga. se ejecuta, en el Servicio.
Si realmente necesita utilizar un AsyncTask dentro de un servicio de intendencia, puede crear un método en su AsyncTask que invoque de doInBackGround y onPostExecute. Algo como esto:
void executeFlowOnBackground(Params params) {
onPostExecute(doInBackground(params));
}
En mi caso, hice esto porque todas las solicitudes de aplicaciones fueron hechas por una clase que extendió AsyncTask, y debido a la implementación fue difícil refactorizar el código.
IntentService
s ya son procesos en segundo plano; no hay necesidad de iniciar una AsyncTask desde allí. Además, iniciar una es una clase de ayuda que te ayuda a multiples lecturas. Solo asegúrate de no manipular AsyncTask
es ''seguro'' desde cualquier lugar;View
en el método doInBackground()
de tu AsyncTask si lo usas en tu Actividad.
Si necesita generar múltiples hilos dentro de su IntentService, simplemente use:
nuevo Thread (Runnable r) .start ();
Ver un ejemplo en Cómo ejecutar un hilo ejecutable en Android?
Si necesita llamar a algún tipo de devolución de llamada, use Handler . Para ver un ejemplo, consulte http://www.vogella.com/articles/AndroidPerformance/article.html#handler