마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이해 불가능한 문제.. 질문드려요

0 추천
class DownloadThread extends Thread {
  String ServerUrl;
  String LocalPath;

  DownloadThread(String serverPath, String localPath) {
   ServerUrl = serverPath;
   LocalPath = localPath;
  }

  @Override
  public void run() {
   URL imgurl;
   int Read;
   try {
    imgurl = new URL(ServerUrl);
    HttpURLConnection conn = (HttpURLConnection) imgurl.openConnection();
    int len = conn.getContentLength();

    //에러 발생지점
    byte[] tmpByte = new byte[len];

    InputStream is = conn.getInputStream();
    File file = new File(LocalPath);
    FileOutputStream fos = new FileOutputStream(file);
    for (;;) {
     Read = is.read(tmpByte);
     if (Read <= 0) {
      break;
     }
     fos.write(tmpByte, 0, Read);
    }
    is.close();
    fos.flush();
    fos.close();
    conn.disconnect();

    
   } catch (MalformedURLException e) {
    ut.CalltoAlertDialog_ok(getString(R.string.alert), getString(R.string.setting_skin_downloadfail));
   } catch (IOException e) {
    ut.CalltoAlertDialog_ok(getString(R.string.alert), getString(R.string.setting_skin_downloadfail));
   }

                        // 파일 실행
   mAfterDown.sendEmptyMessage(0);
  }
 }

안녕하세요? 오늘 일을 시작 해볼려고하니.. 이해 할수 없는 에러가 발생해서.. 질문드립니다..

분명히 어제 저녁까진 잘됐구..

어제 저녁에 컴파일해서 현재 마켓에 등록된 앱은 이부분이 아주 잘 돌아가고 있습니다.

 

어제 그렇게 작업 해놓고

오늘 다시 와서 실행 시켜 보니..

byte[] tmpByte = new byte[len];

이부분에서 len 값이 -1로 들어오면서 NegativeArraySizeException 을 뿜어내더군요..

 

어제만든 상태에서 한글자도 변경하지 않았는데 말이죠...

그래서 혹시 나도 모르게 뭘 수정 했나 하고.. 백업 본을 받아서 다시 해보니..

똑같은 증상입니다..

 

그런데 특이한건.. 어제 컴파일 해논 apk에서는 잘 작동이 됩니다..

같은 소슨데;; 어제 컴파일 한건 잘되고 오늘 컴파일 한건 에러가...

이럴 수가 있을까요?

 

아시는분 답변좀 부탁드립니다....

 

Ripple (810 포인트) 님이 2014년 2월 21일 질문
소스 내용이 같다면 시험 환경에서 달라진건 없나요?
len > conn > imgurl  > ServerUrl, LocalPath 순으로 체크해보세요

2개의 답변

0 추천
 
채택된 답변
getContentLength() 가 -1값이 들어온다는건

해당 URL에 연결하지 못해서..가 가장 큰 이유가 아닐까요?

 

-1이 들어올때 다시 연결하거나,

안내메세지를 띄우는등의 예외처리가 필요할것 같습니다.

 

이건 코드의 문제가 아니라 그때그때 네트워크사정에 따른 문제일수도있으니

예외처리가 필수겠네요!
안드로이드로우 (15,740 포인트) 님이 2014년 2월 21일 답변
Ripple님이 2014년 2월 21일 채택됨
아... 가상기기에서 네트워크 접속에 문제있었던거 같군요. 하하하...
0 추천
len 값을 debug point 찍어서 봐보세요
aucd29 (218,390 포인트) 님이 2014년 2월 21일 답변
...