我正在我的应用程序中下载图像以将其填充到 UI 中。
这是我用来将该图像下载并保存到设备外部存储器的代码。
File firstDirectory=new File(Environment.getExternalStorageDirectory()+"/Catalog");
if (firstDirectory.exists()==false)
{
firstDirectory.mkdir();
}
for (int i = 0; i <list.size() && !isCancelled(); i++) {
Content content= list.get(i);
try
{
File firstFile =new File(firstDirectory+"/"+content.getId()+".jpeg");
if (firstFile.exists()==false || firstFile.length()==0)
{
Boolean status=firstFile.createNewFile();
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(kSubURL+content.getPublisherID()+"&tid="+content.getId()+"_370&tp=i");
HttpResponse resp = httpClient.execute(httpGet);
HttpEntity entity= resp.getEntity();
InputStream is = entity.getContent();
FileOutputStream foutS = new FileOutputStream(firstFile);
byte[] buffer = new byte[1024];
long total = 0;
int count;
while ((count = is.read(buffer)) != -1) {
total += count;
foutS.write(buffer, 0, count);
}
foutS.close();
is.close();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
此代码可以正常工作以将图像下载并保存到设备上。但问题是,有时图像没有完全下载。如何处理此类案件?即使响应代码是 200,图像也没有正确下载。在这种情况下,图像看起来像这样
谁能告诉我如何正确处理这种情况?如果应用程序在写入数据时意外终止,那么如何处理这种情况?在这种情况下,图像部分写入磁盘并且我的图像没有正确加载到图像视图中。
另外,请告诉我是否可以在将图像填充到 ImageView 时检查图像是否正确加载。