안녕하세요.

액티비티가 생성되면서 스레드를 하나 생성하고 데이터를 HTTP를 이용하여 다운로드 받습니다.

그런데 이 때 메인 스레드가 멈춰버립니다.

Back버튼을 클릭해도 그래도 멈춰있구요..

스래드를 데몬으로 생성해도 마찬가지로 메인 스레드가 멈춰버립니다.

이게 왜 이런건가요???



소스는 다음과 같습니다.


 Thread dialogThread = new Thread(new Runnable() {
  @Override
  public void run() {
   hShowDownloadDialog.sendEmptyMessageDelayed(0, 500);
  }
 });


 @Override
 protected void onResume() {
  if( !bDownload)
  {
   dialogThread.run();
  }//end if
  
  super.onResume();
 }




private Handler hShowDownloadDialog = new Handler()
 {
  public void handleMessage(Message msg){
   
   Thread progressThread = new Thread(new Runnable() {
    @Override
    public void run() {
     progressDialog = new ProgressDialog(VodMainActivity.this);
     progressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
     progressDialog.setMessage("데이터 수신중입니다.");
     progressDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
      
      @Override
      public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
       
       switch(keyCode)
       {
       case KeyEvent.KEYCODE_BACK:
        threadInterrupt = false;
        finish();
       }//end switch
       return false;
      }
     });
     progressDialog.show();
    }
   });
   progressThread.setPriority(10);
   progressThread.run();
   
   
   hDownloadVOD.sendEmptyMessageDelayed(0, 500);
  }
 };






private Handler hDownloadVOD = new Handler()
 {
  public void handleMessage(Message msg){
   
   downloadThread = new Thread(new Runnable() {
    @Override
    public void run() {
     Log.i("VodMainActivity Thread Run()","Intent data request");
     
     Intent intent = getIntent();
     String sMemberSn = intent.getStringExtra(LoginActivity.INTENT_DATA_MEMBERSN);
     String sCurrCode = intent.getStringExtra(LoginActivity.INTENT_DATA_CURRCODE);
     String sCourseCode = intent.getStringExtra(LoginActivity.INTENT_DATA_COURSECODE);
     
     Log.i("VodMainActivity Thread Run()","Intent data get");
     
     String sVodDataURL = http://--------------[url]--------------------?;    <- 공개할 수 없어서 이렇게 처리하였습니다.
     sVodDataURL += ( "membersn=" + sMemberSn );
     sVodDataURL += ( "&currcode=" + sCurrCode );
     sVodDataURL += ( "&coursecode=" + sCourseCode );
     
     Log.i("VodMainActivity onCreate()","vod url : " + sVodDataURL);
     
     modHTTP http = new modHTTP();
     try
     {
      if( http.getHTTP_VodList(sVodDataURL, vodInfo, items))    
      {
       Log.i("VodMainActivity onCreate()", "Show Vod List index 0");
       hCloseDownloadDialog.sendEmptyMessageDelayed(0, 500);
       
       bDownload = true;
       
       showVodList(0);
      }//end if
      else
      {
       //XML을 제대로 못 가져 왔을 때
       Log.e("VodMainActivity onCreate()", "Can't get XML InputStream");
       hCloseAlertDialog.sendEmptyMessageDelayed(0, 500);
      }//end else
     }catch(Exception e){
      Log.e("VodMainActivity onCreate()", e.getMessage());
      e.printStackTrace();
      
      hCloseAlertDialog.sendEmptyMessageDelayed(0, 500);
     }//end catch
    }//end run()
   });
   
   
   downloadThread.setDaemon(true);
   downloadThread.run();
  }//end handleMessage
 };