소켓통신을 하구 있는 액티비티 인데

뒤로가기 버튼을 클릭하면 onBackPressed() 메소드가 호출 되는게 맞는지요?

th 스레드를 인터럽트 시키긴 했는데 다음과 같은 에러가 뜹니다

소스와 에러 메세지 입니다.

참고로 StartChating 액티비티에서 인턴트하여 ChatingWindow 로 넘어온 상태입니다.

public class ChatingWindow extends Activity implements OnClickListener{
 private StartChating sc;
 private Socket socket;
 private OutputStream os;
 private InputStream is;
 private TextView textbox;
 private EditText chat;
 private Button chatBtn;
 private String msg, str;
 private Thread th;
 private int size;
 private byte[] bufPacket;
 private boolean exitFlog = true;
 private final Handler handler = new Handler();
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.chating);
     textbox = (TextView) findViewById(R.id.textbox);
     chat = (EditText) findViewById(R.id.chat); 
     chatBtn = (Button) findViewById(R.id.chatbtn);     
     chat.requestFocus();
     chatBtn.setOnClickListener(this);
     
     socket = StartChating.socket;
  try {
   os = socket.getOutputStream();
   is = socket.getInputStream();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 
     
     th = new Thread(){
      public void run(){
       try{
        chatingThread();
       }catch (Exception e) {
     
    }
      }
     };
     th.start();
 }
 
 @Override
 public void onBackPressed(){
  Toast.makeText(getApplicationContext(), "onBackPressed()", Toast.LENGTH_LONG)
  .show();
  th.interrupt();
  try {
   os.write(("/q"+"\n").getBytes());
   os.close();
   is.close();
   socket.close();
  } catch (IOException e2) {    
  }
  finish();
 }
  @Override
 public void onClick(View v) {
  msg = chat.getText().toString();
  
  if(msg == null || msg.equals("")){
   Toast.makeText(getApplicationContext(), "대화내용을 입력하세요", Toast.LENGTH_LONG)
      .show();
   chat.requestFocus();
   return;
  }else{
   try {
    os.write((msg).getBytes());
   } catch (IOException e) {    
    e.printStackTrace();
   }
   chat.setText("");
   chat.requestFocus();
  }
  
  
 }
 
 public void chatingThread() {  
  try {
   textbox.setText("==== 환영합니다  ====\n");
   
   while(exitFlog){
    bufPacket = null;    
    bufPacket = new byte[50000];
    
    size = is.read(bufPacket);
    str = new String(bufPacket, 0, size, "EUC-KR");
    handler.post(new Runnable(){
     public void run(){
      textbox.setText(textbox.getText() + str);
     }
    });       
   }  
  } catch (IOException e) {
   Log.e("socket", e.toString());
   exitFlog = false;
  }
 
 }
}



09-22 06:30:57.456: ERROR/socket(746): java.net.SocketException: Bad socket
09-22 06:30:57.826: DEBUG/AndroidRuntime(746): Shutting down VM
09-22 06:30:57.835: WARN/dalvikvm(746): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
09-22 06:30:57.846: ERROR/AndroidRuntime(746): Uncaught handler: thread main exiting due to uncaught exception
09-22 06:30:57.875: ERROR/AndroidRuntime(746): android.app.SuperNotCalledException: Activity {yalsooni.chating/yalsooni.chating.ChatingWindow} did not call through to super.onStop()
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.app.Activity.performStop(Activity.java:3799)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3416)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3487)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.app.ActivityThread.access$2800(ActivityThread.java:119)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1896)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.os.Looper.loop(Looper.java:123)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at android.app.ActivityThread.main(ActivityThread.java:4363)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at java.lang.reflect.Method.invokeNative(Native Method)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at java.lang.reflect.Method.invoke(Method.java:521)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-22 06:30:57.875: ERROR/AndroidRuntime(746):     at dalvik.system.NativeStart.main(Native Method)

어떻게 해결해야할지 조언 부탁드립니다.

감사합니다