studio onprogressupdate oncancelled implement hilos definicion create asynctask android background android-asynctask

onprogressupdate - oncancelled asynctask android



corriendo AsyncTask paralelo (3)

Ha habido un cambio en AsyncTask desde el lanzamiento de Honeycomb. Las versiones anteriores tenían un grupo de subprocesos de 10 subprocesos, por lo que podía ejecutar 10 tareas en paralelo. Pero para Honeycomb y superior, por defecto es un ejecutor en serie, que ejecuta las tareas una por una. Pero puede pasar un ThreadPoolExecutor para su ejecución:

if (Build.VERSION.SDK_INT >= 11) { //--post GB use serial executor by default -- task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { //--GB uses ThreadPoolExecutor by default-- task.execute(); }

Tengo una SplashActivity en mi aplicación que hace algunas cosas usando AsyncTask cuando inicio mi aplicación.

También creé otro AsyncTask que descarga datos del servidor. Ahora, después de cerrar mi aplicación, AsyncTask aún está descargando los datos.

Pero cuando inicio de nuevo mi aplicación, mi AsyncTask de SplashActivity no ejecuta su fondo (función doInBackground) hasta que mi descargador AsyncTask finaliza y mi aplicación queda colgada.

Entonces, ¿mi pregunta es que no podemos ejecutar dos AsyncTask paralelo? Ambos AsyncTask son diferentes y hacen sus propias cosas. Hay una manera de hacerlo.


Otra opción es usar AsyncTaskCompat desde la biblioteca de soporte v.4.

AsyncTaskCompat.executeParallel(new AsyncTask<Void, Void, Object>() { @Override protected Object doInBackground(Void... params) { // do your parallel task here return null; } @Override protected void onPostExecute(Object result) { // and fetch result } });


Tendrá que usar un thread pool Executor para ejecutar AsyncTask . La implementación predeterminada utiliza un ejecutor en serie que se ejecuta en un único hilo

Entonces crea un ThreadPoolExecutor y luego usa

AsyncTask''s executeOnExecutor lugar de simplemente ejecutar el método