Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 03/07/14, 10:31:18
Avatar de jdiego22
jdiego22 jdiego22 no está en línea
Desarrollador
Mensajes: 351
Compra y venta: (1)
 
Fecha de registro: dic 2011
Localización: Valladolid
Mensajes: 351
Modelo de smartphone: Galaxy Note 9
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
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.
Responder Con Cita


  #2  
Viejo 03/07/14, 10:51:20
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #3  
Viejo 03/07/14, 11:58:25
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de jdiego22
jdiego22 jdiego22 no está en línea
Desarrollador
Mensajes: 351
Compra y venta: (1)
 
Fecha de registro: dic 2011
Localización: Valladolid
Mensajes: 351
Modelo de smartphone: Galaxy Note 9
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
Muchas gracias a los 2 ya probare a ver aunque de momento lo he suprimido para seguir avanzando.
Responder Con Cita
Respuesta

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


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 02:28:03 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007