Segunda AsyncTask no se ejecuta
Tengo 2 AsyncTask, uno que está creando conexiones del zócalo y otro que está transmitiendo objetos usando esos zócalos. Mi código es el siguiente:
try { connectat = true; transmitter = new SocketTransmitter(); transmitter.execute(); connector = new socketConnector(); connector.execute(owner); this.open(); } catch (IOException e) {
Sin embargo, el AsyncTask
llamado socketConnector
nunca se crea o se ejecuta. Intenté cambiar el orden pero el transmisor no se creó ni ejecutó …
- Tiempo de espera de conexión de socket Android
- ¿Cuál es el tiempo de espera predeterminado de java.net.Socket en android?
- Mensajes de error NetlinkListener y NetlinkEvent
- 'Permiso denegado' al conectarse al socket unix abstracto
- Android: ¿Cómo detectar la aplicación eliminada de la lista de aplicaciones recientes?
¿Qué está mal con eso?
- Cliente-Servidor: Transferencia de archivos de Android a PC conectada vía socket
- Comunicación de socket cliente / servidor de Android mediante Service o IntentService
- ¿Cómo ejecutar el servicio no en el hilo principal?
- Reenvío de puertos Android
- DatagramSocket.bind (); Socket excepción: no se puede asignar la dirección solicitada. Emulador de Android
- Cómo enviar el archivo binario y el texto usando el mismo socket
- HTTP Vs sockets Vanilla para cargar archivos binarios grandes (50-200 MB) desde un dispositivo Android a través de una red Wi-Fi de un solo salto
- Android M doze modo y socket "nativo" posix congelado
Lo odiaba cuando HONEY COMB cambiaba la ejecución de AsyncTask múltiple de concurrente a secuencial. Así que cada vez que ejecuto un AsyncTask, hago algo como esto.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { task.execute(); }
Pero el tamaño del grupo de subprocesos es 5, si agrega la sexta tarea, se agregará en una cola y no se ejecutará hasta que haya terminado uno de los cinco subprocesos.
Puesto que no sé qué nivel de la API usted está utilizando, sugeriría que usted vaya a través de la TAREA de ASYNC
Según la documentación:
Cuando se introdujo por primera vez, AsyncTasks se ejecutaron en serie en un solo hilo de fondo. Comenzando con DONUT, esto fue cambiado a un grupo de hilos permitiendo que múltiples tareas funcionaran en paralelo. Comenzando con HONEYCOMB, las tareas se ejecutan en un solo hilo para evitar errores comunes de aplicación causados por la ejecución en paralelo.
Si realmente desea una ejecución paralela, puede invocar
executeOnExecutor(java.util.concurrent.Executor, Object[]) with THREAD_POOL_EXECUTOR.
¿Ha intentado ejecutar el transmitter
en el connector's
onPostExecute()
o viceversa?
Había escrito la clase para ejecutar AsyncTask simultáneamente.
Echale un vistazo:
Android-AsyncTask-Executor
Se necesita todo el trabajo para ejecutar AsyncTask concurrentemente en cualquier versión del sistema operativo Android, es mejor que usar:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { task.execute(); }
Porque AsyncTask.THREAD_POOL_EXECUTOR disponible sólo en api> = 11
Con mi clase solo necesitas escribir:
AsyncTaskExecutor.executeConcurrently(task, params);
Y eso es todo. No hay errores en Android 2.x, 3.xy 4.x
Al igual que Robin Chander dijo, es probable que se ejecuta en serie y se puede utilizar executeOnExecutor … pero no está disponible hasta Android 3.0. Si desea una compatibilidad completa, debe descargar AsyncTask
y utilizar Runnable
. Si necesita informar los resultados en el hilo de la interfaz de usuario, no olvide utilizar un Handler
.
- ¿Puedo deshabilitar systemui desde dentro de mi aplicación android?
- Android OAuth: Excepción en retrieveAccessToken ()