public class MainActivity extends Activity {
 
 WebDownThread   m_thread;
 FileDownloadThread  m_thread2;
 String    m_strTxtData;
 
 Handler m_handler = new Handler()
 {  
  public void HandleMessage(android.os.Message msg){
   
   Bundle bd = msg.getData( ) ;
   m_strTxtData = bd.getString( "arg" ) ;
  }
 };
 
 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
       File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/ljkTemp");
  
       if(!path.exists())
   path.mkdir();
       
       m_thread = new WebDownThread(m_handler);
       m_thread.start(); 

}

 

여기까지가 메인입니다.

메인액티비티에서는  m_handler 를 생성하고 WebDownThread 를 생성할때   m_handler 를 파라미터로 전달하면서 스레드가 시작됩니다.

 

==============================================================================================================

 

두번째 파일인...스레드 클래스

 

public class WebDownThread extends Thread {

  String m_result;
  URL url;
  HttpURLConnection conn;
  int resCode;
  BufferedReader br;
   StringBuilder    sb  = null; //문자열 저장할
   BufferedReader    BufReader = null;
   BufferedWriter    bw  = null;
       Handler     m_handler;
   
       public WebDownThread(Handler m_handler2) {
         m_handler = m_handler2;
        }

 
   
  public void run()
  {

      String strData = "데이타";

     Bundle bd = new Bundle();
      bd.putString("arg", strData);

      Message msg = m_handler.obtainMessage();// = m_hd.
      msg.setData(bd);
      m_handler.sendMessage(msg);

 

  }

 

}

============================================================================================================

우선 MainActivity.java 파일안에 클래스 및 스레드가 몽땅 모여있는게 싫어서...

WebDownThread  클래스를 따로 파일로 만들었습니다 // WebDownThread .java

 

WebDownThread  이 생성될때 메인액티비에서 핸들러를 건내주고 그 핸들러를 토대로 sendmessage 까지 했습니다.

 

그렇게되면 메인액티비티의  아래 부분을 타고 올줄알았는데...브레이크 포인트를 찍고 기다려도 오지를 않더군요..

 

sendMessage 코드 타는거까지 확인을 했는데...HandleMessage() 에 브레이크가 타지를 않습니다.

 

  public void HandleMessage(android.os.Message msg){

Bundle bd = msg.getData( ) ;  <== break point 찍음
m_strTxtData = bd.getString( "arg" ) ;
}

 

 

 

한화면안에 모든 코드가 있는게 익숙하지않아서 나름 놔눠서 해보려고 노력하고있는데요....

이렇게 하는 방식이 별로 좋지 않은것인가요?

 

아무튼 책이나 다른곳을 보면 메인액티비티에서 스레드 및 전부다 만들고 한군데에 코드가있어서 가독성도 힘들어서 원래 MFC 하던식으로 해본건데...책이랑 달라서 그런지 핸들러를 타지를 않네요..

 

어디가 잘못된것인가요?