android 中断线程的处理

我先描述下我的问题:
我现在对一个用户注册的功能
1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)
2.用一个线程clientThread执行数据的提交和返回
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。
以下是我的代码,希望大家互相讨论,指出我的不足,最好能给出比较好的解决方案
好了不废话了,先贴代码!!

我还是把我btn_register的操作都贴上来好了

btn_register.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(doBeforeSubmit()){
		
					try {
						Log.v(TAG, "clientThread prepare01。。。:"+Thread.interrupted());
						clienThread=new Thread(){
							public void run() {
								try {
									Log.v(TAG, "clientThread prepare02。。。:"+Thread.interrupted());
									while (!Thread.interrupted()) {
										Log.v(TAG, "clientThread starting。。。");
										MeApiCall meApiCall=new MeApiCallImpl();
										Me me=new Me();
										me.setMeEmail(et_register_account.getText().toString().trim());
										me.setMePwd(et_register_pwd.getText().toString().trim());
										me.setMeName(et_register_nickName.getText().toString().trim());										
										
										Log.v(TAG, "clientThread data loaded。。。");										
										meApiCall.register(me);
										Log.v(TAG, "clientThread callback。。。");
									
										handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG);
									
										
                                       clienThread.interrupt();   //中断线程
									}
								} catch (InterruptedException e) {
									// TODO: handle exception
									Log.v(TAG, "clientThread is interrupt");
								}catch (Exception e) {
									// TODO Auto-generated catch block
									Log.v(TAG, "exception: "+e.getMessage());
									handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG);
									e.printStackTrace();
								}
							};

						};
						Log.v(TAG, "progressDialog prepare01。。。:");
						progressDialog=ProgressDialog.show(Register.this, 
								                           "", 
								                           "正在获取....", 
								                           true, 
								                           true,
								                           new DialogInterface.OnCancelListener() {
															
															@Override
															public void onCancel(DialogInterface dialog) {
																// TODO Auto-generated method stub
																
																	try {
																		clienThread.interrupt();
																		Log.v(TAG, "interrupt is success!");
																	} catch (Exception e) {
																		// TODO Auto-generated catch block
																		Log.v(TAG, "interrupt is fail!");
																		e.printStackTrace();
																	}
															
															}
														}
								                          );
						Log.v(TAG, "clientThread prepareing_end。。。");
						clienThread.start();
						//Log.v(TAG, "clientThread prepareing_end。。。");
					} catch (Exception e) {
						// TODO Auto-generated catch block
						Log.v(TAG, e.getMessage()+" 00");
						e.printStackTrace();
					}
					
					
				}
				
			}
		});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值