Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 03/07/14, 10:31:18
Array

[xs_avatar]
jdiego22 jdiego22 no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: dic 2011
Localización: Valladolid
Mensajes: 351
Modelo de smartphone: Galaxy Note 9
Tu operador: Yoigo
java.util.concurrent.RejectedExecutionException:

Tengo problemas al obtener unos logotipos.

mi código es este:
Código:
public class Descarga_Img extends AsyncTask<String, Integer, Bitmap>{

		@Override
		protected Bitmap doInBackground(String... params) {
			// TODO Auto-generated method stub
			try {
				HttpGet web = new HttpGet(params[0]);
				HttpClient httpClient = new DefaultHttpClient();
				HttpResponse response = (HttpResponse) httpClient.execute(web);
				HttpEntity entity = response.getEntity();
				BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(
						entity);
				InputStream inputStream = bufferedHttpEntity.getContent();
				Bitmap loaded = BitmapFactory.decodeStream(inputStream);
				return loaded;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		}
		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub
			super.onPreExecute();
		}
		@Override
		protected void onPostExecute(Bitmap result) {
			// TODO Auto-generated method stub
			logo = result;
			super.onPostExecute(result);
		}
}
Y el log:

Código:
07-03 10:21:25.737: W/System.err(29786): java.util.concurrent.RejectedExecutionException: Task android.os.AsyncTask$3@41bfc898 rejected from java.util.concurrent.ThreadPoolExecutor@41855248[Running, pool size = 9, active threads = 9, queued tasks = 128, completed tasks = 21]
07-03 10:21:25.737: W/System.err(29786):    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2011)
07-03 10:21:25.737: W/System.err(29786):    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:793)
07-03 10:21:25.737: W/System.err(29786):    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
07-03 10:21:25.737: W/System.err(29786):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:590)
07-03 10:21:25.737: W/System.err(29786):    at android.os.AsyncTask.execute(AsyncTask.java:535)
07-03 10:21:25.737: W/System.err(29786):    at com.cosmo.basededatosempresa.Empresa.seturl_logo(Empresa.java:162)
07-03 10:21:25.737: W/System.err(29786):    at com.cosmo.basededatosempresa.IntentEmpresas.getEmpresa(IntentEmpresas.java:95)
07-03 10:21:25.737: W/System.err(29786):    at com.cosmo.basededatosempresa.IntentEmpresas.tareaLarga(IntentEmpresas.java:136)
07-03 10:21:25.737: W/System.err(29786):    at com.cosmo.basededatosempresa.IntentEmpresas.onHandleIntent(IntentEmpresas.java:42)
07-03 10:21:25.737: W/System.err(29786):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
07-03 10:21:25.737: W/System.err(29786):    at android.os.Handler.dispatchMessage(Handler.java:102)
07-03 10:21:25.747: W/System.err(29786):    at android.os.Looper.loop(Looper.java:136)
07-03 10:21:25.747: W/System.err(29786):    at android.os.HandlerThread.run(HandlerThread.java:61)
Muchas gracias de antemano.
__________________
JLDes Innovation SLU
Responder Con Cita


  #2  
Viejo 03/07/14, 10:51:20
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Ya te lo dice la excepción, el AsyncTask no puede tener más de 128 tareas pendientes y al añadir una nueva la rechaza.

La solución, en vez de lanzar todas las tareas de obtener imágenes de golpe, lanza unas cuantas solo y que cada tarea al terminar arranque una nueva de las que quedan.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #3  
Viejo 03/07/14, 11:58:25
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
O usa librerías ya preparadas para ello, como UniversalImageLoader, Picasso o Volley.

Yo he usado las 3 y me quedo con Volley, en primer lugar porque es la librería oficial de Google para tareas de comunicación con HTTP, te despreocupas de usar AsyncTask porque el solo te lo enmascara, vamos, a la hora de programar parece que haces las llamadas de forma síncrona pero en realidad son asíncronas. No sólo vale para imágenes (tiene tareas específicas para ello), vale para cualquier tipo de comunicación HTTP.

Y las otras 2, son muy parecidas, pero UIL me ha dado bastantes problemas tontos que Picasso no me ha dado. Aunque insisto que al final he quitado las 2 y sólo uso Volley.

Cualquiera de las 3 te hace tareas específicas para imágenes, como cachearlas (si ya la tienes descargada no la vuelve a descargar) y usar un buffer de llamadas para no sobrepasar al ThreadPool.
Responder Con Cita
  #4  
Viejo 03/07/14, 12:54:09
Array

[xs_avatar]
jdiego22 jdiego22 no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: dic 2011
Localización: Valladolid
Mensajes: 351
Modelo de smartphone: Galaxy Note 9
Tu operador: Yoigo
Muchas gracias a los 2 ya probare a ver aunque de momento lo he suprimido para seguir avanzando.
__________________
JLDes Innovation SLU
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 19:39:23 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /