http://www.oschina.net/code/snippet_163910_6185
btn_register.setOnClickListener(new View.OnClickListener() { 02 03 @Override 04 public void onClick(View v) { 05 // TODO Auto-generated method stub 06 if(doBeforeSubmit()){ 07 08 try { 09 Log.v(TAG, "clientThread prepare01。。。:"+Thread.interrupted()); 10 clienThread=new Thread(){ 11 public void run() { 12 try { 13 Log.v(TAG, "clientThread prepare02。。。:"+Thread.interrupted()); 14 while (!Thread.interrupted()) { 15 Log.v(TAG, "clientThread starting。。。"); 16 MeApiCall meApiCall=new MeApiCallImpl(); 17 Me me=new Me(); 18 me.setMeEmail(et_register_account.getText().toString().trim()); 19 me.setMePwd(et_register_pwd.getText().toString().trim()); 20 me.setMeName(et_register_nickName.getText().toString().trim()); 21 22 Log.v(TAG, "clientThread data loaded。。。"); 23 meApiCall.register(me); 24 Log.v(TAG, "clientThread callback。。。"); 25 26 handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG); 27 28 29 clienThread.interrupt(); //中断线程 30 } 31 } catch (InterruptedException e) { 32 // TODO: handle exception 33 Log.v(TAG, "clientThread is interrupt"); 34 }catch (Exception e) { 35 // TODO Auto-generated catch block 36 Log.v(TAG, "exception: "+e.getMessage()); 37 handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG); 38 e.printStackTrace(); 39 } 40 }; 41 42 }; 43 Log.v(TAG, "progressDialog prepare01。。。:"); 44 progressDialog=ProgressDialog.show(Register.this, 45 "", 46 "正在获取....", 47 true, 48 true, 49 new DialogInterface.OnCancelListener() { 50 51 @Override 52 public void onCancel(DialogInterface dialog) { 53 // TODO Auto-generated method stub 54 55 try { 56 clienThread.interrupt(); 57 Log.v(TAG, "interrupt is success!"); 58 } catch (Exception e) { 59 // TODO Auto-generated catch block 60 Log.v(TAG, "interrupt is fail!"); 61 e.printStackTrace(); 62 } 63 64 } 65 } 66 ); 67 Log.v(TAG, "clientThread prepareing_end。。。"); 68 clienThread.start(); 69 //Log.v(TAG, "clientThread prepareing_end。。。"); 70 } catch (Exception e) { 71 // TODO Auto-generated catch block 72 Log.v(TAG, e.getMessage()+" 00"); 73 e.printStackTrace(); 74 } 75 76 77 } 78 79 } 80 });