在android中从Web服务器获取图像时出现异常
嗨,我在从服务器获取图像时遇到以下异常。我的工作是获取5-7张图像,之后得到以下信息: 06-12 16:35:50.904: 警告/异步任务(717): java.lang.InterruptedException 06-12 16:35:50.904:警告/异步任务(717):在android中从Web服务器获取图像时出现异常,android,webserver,android-asynctask,imagesource,Android,Webserver,Android Asynctask,Imagesource,嗨,我在从服务器获取图像时遇到以下异常。我的工作是获取5-7张图像,之后得到以下信息: 06-12 16:35:50.904: 警告/异步任务(717): java.lang.InterruptedException 06-12 16:35:50.904:警告/异步任务(717): 在 java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronize
在 java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1254) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:219) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.FutureTask.get(FutureTask.java:82) 06-12 16:35:50.904: 警告/异步任务(717):在 android.os.AsyncTask$3.done(AsyncTask.java:196) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.FutureTask$Sync.innerCancel(FutureTask.java:293) 06-12 16:35:50.904: 警告/异步任务(717):在 concurrent.FutureTask.cancel(FutureTask.java:75) 06-12 16:35:50.904: 警告/异步任务(717):在 android.os.AsyncTask.cancel(AsyncTask.java:325) 06-12 16:35:50.904: 警告/异步任务(717):在 us.bnn.news.IncidentDetailsActivity$GetImages.doInBackground(IncidentDetailsActivity.java:1691) 06-12 16:35:50.904: 警告/异步任务(717):在 us.bnn.news.IncidentDetailsActivity$GetImages.doInBackground(IncidentDetailsActivity.java:1) 06-12 16:35:50.904: 警告/异步任务(717):在 android.os.AsyncTask$2.call(AsyncTask.java:185) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.FutureTask.run(FutureTask.java:137) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 06-12 16:35:50.904: 警告/异步任务(717):在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 06-12 16:35:50.904: 警告/异步任务(717):在 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;
}
您是否在不同的线程中接收图像?如果是,您使用哪个类下载图像?标准HttpClient不是线程安全的,您应该使用ThreadSafeClientConnManager获取线程安全的。您是否在不同的线程中接收图像?如果是,您使用哪个类下载图像?标准的HttpClient不是线程安全的,您应该使用ThreadSafeClientConnManager来获得线程安全的。我已经添加了这个问题,您可以研究一下并建议我怎么做吗?不清楚何时抛出异常。从您提供的堆栈跟踪来看,问题似乎不是下载图像,而是AsyncTask的问题……我已经添加了这个问题,您能研究一下并建议我怎么做吗?不清楚何时抛出异常。从您提供的堆栈跟踪来看,问题似乎不是下载映像,而是异步任务的某些内容。。。