Исключение при получении изображения с веб-сервера в Android - PullRequest
1 голос
/ 12 июня 2011

Привет я получаю следующее исключение при получении изображения с сервера. Я работаю для получения 5-7 изображений, после чего получил следующее:

06-12, 16: 35: 50,904: WARN / AsyncTask (717): java.lang.InterruptedException 06-12 16: 35: 50.904: WARN / AsyncTask (717):
в java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1254) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.FutureTask $ Sync.innerGet (FutureTask.java:219) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.FutureTask.get (FutureTask.java:82) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в android.os.AsyncTask $ 3.done (AsyncTask.java:196) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.FutureTask $ Sync.innerCancel (FutureTask.java:293) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.FutureTask.cancel (FutureTask.java:75) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в android.os.AsyncTask.cancel (AsyncTask.java:325) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в us.bnn.news.IncidentDetailsActivity $ GetImages.doInBackground (IncidentDetailsActivity.java:1691) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в us.bnn.news.IncidentDetailsActivity $ GetImages.doInBackground (IncidentDetailsActivity.java:1) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в android.os.AsyncTask $ 2.call (AsyncTask.java:185) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.FutureTask.run (FutureTask.java:137) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1068) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:561) 06-12 16: 35: 50.904: WARN / AsyncTask (717): в java.lang.Thread.run (Thread.java:1096)

Я использую этот метод:

public static Bitmap getLargeImage(String imgUrl)
    {
        Bitmap bitmap = null;               
        InputStream in = null;
        Log.v(TAG,"start fetchimg main images");
        try
        {             
            DefaultHttpClient mHttpClient = new DefaultHttpClient();

            HttpGet mHttpGet = new HttpGet(imgUrl);

            HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet);

            if (mHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
            {
                HttpEntity entity = mHttpResponse.getEntity();           
                if ( entity != null) 
                {
                    in = entity.getContent();

                    BufferedInputStream bis = new BufferedInputStream(in, 8190);

                    ByteArrayBuffer baf = new ByteArrayBuffer(50);
                    int current = 0;
                    while ((current = bis.read()) != -1) {
                        baf.append((byte)current);
                    }
                    byte[] imageData = baf.toByteArray();
                    BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
                    if(in != null)
                        in.close();
                } 
            }                     
        }
        catch (Exception ex)
        {
            Log.v("Error Fetching images from url",ex.getMessage());          
        }
        return bitmap;
    }

1 Ответ

1 голос
/ 12 июня 2011

Получаете ли вы изображения в разных темах?Если да, то какой класс вы используете для загрузки изображений?Стандартный HttpClient не является потокобезопасным, вы должны использовать ThreadSafeClientConnManager, чтобы получить потокобезопасный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...