2012-10-01 12 views
1

응용 프로그램에 이미지를 다운로드하여 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이지만 이미지가 제대로 다운로드되지 않습니다. 이 경우, 이미지는 사람이 어떻게 제대로 상황을 처리하는 방법 말해 주시겠습니까이

enter image description here

뭔가를 찾고? 응용 프로그램이 예기치 않게 데이터를 쓰는 동안 종료되면 해당 상황을 처리하는 방법을 고려하십시오. 이 경우에도 이미지가 부분적으로 디스크 &에 기록됩니다. 내 이미지가 이미지보기에 제대로로드되지 않습니다.

또한 ImageView에 이미지를 채우는 동안 이미지가 제대로로드되었는지 여부를 확인할 수 있는지 여부를 알려주십시오.

+0

이미지의 자리 표시자를 사용하고 이미지 다운로드가 완료 될 때까지 표시하십시오. – Blackbelt

+1

@blackbelt .. 배경에서이 이미지들을 다운로드 중입니다. 이미지 다운로드가 불완전한 지 프로그램 적으로 알아내는 방법은 무엇입니까? – Bharath

+0

콘텐츠 길이 (서버에 헤더에있는 경우)와 이미지 크기를 비교할 수 있습니다. – Blackbelt

답변

1

나는 또한 많은이의 연구를하고 마지막으로 나는 이미지 길이

URL url = new URL(url); 
URLConnection conection = url.openConnection(); 
conection.connect(); 
fileLength = conection.getContentLength(); 

체크 fileLength 및 다운로드 한 이미지 파일의 길이를 확인하여이를 극복. 동등하거나 가깝다면 성공적으로 다운로드됩니다.

관련 문제