entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

java.util.concurrent.RejectedExecutionException:

Tengo problemas al obtener unos logotipos.

mi código es este:

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:

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.

-1voto

jesusdiego-delafuent comentado

Me han dado algunas soluciones en otros foros aunque de momento no las he probado:
http://www.htcmania.com/showthread.php?t=852319

0voto

Peter comentado

Hola @jesusdiego-delafuente, moví tu respuesta a comentario, porque no es una respuesta :)

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola Jesús,

no hagas esto en una tarea asincrónica: usá las tareas convencionales.
Las tareas asincrónicas van consumiendo recursos, ya que se en un momento dado pueden estar corriendo decenas a la vez y el planificador de Android te las impide. También se obtienen este tipo de errores cuando dos tareas asincrónicas están accediendo al mismo recurso.

Si te hace falta usar tareas asincrónicas, tendrás que mantener la cantidad de instancias concurrentes para controlar vos cuentas corren como máximo al mismo tiempo... algo así como un singleton, pero en vez de solo una, una cantidad fija predeterminada como 4 u 8 por vez.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta