本文实例讲述了Android中断线程的处理方法。分享给大家供大家参考。具体方法如下:J7aHTML5中文学习网 - HTML5先行者学习网
我现在对一个用户注册的功能J7aHTML5中文学习网 - HTML5先行者学习网
1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)J7aHTML5中文学习网 - HTML5先行者学习网
2.用一个线程clientThread执行数据的提交和返回J7aHTML5中文学习网 - HTML5先行者学习网
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。J7aHTML5中文学习网 - HTML5先行者学习网
代码如下,感兴趣的朋友可以参考运行一下,以便得出更好的解决办法。J7aHTML5中文学习网 - HTML5先行者学习网
J7aHTML5中文学习网 - HTML5先行者学习网
btn_register.setOnClickListener(new View.OnClickListener() { J7aHTML5中文学习网 - HTML5先行者学习网
J7aHTML5中文学习网 - HTML5先行者学习网
@Override J7aHTML5中文学习网 - HTML5先行者学习网
public void onClick(View v) { J7aHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated method stub J7aHTML5中文学习网 - HTML5先行者学习网
if(doBeforeSubmit()){ J7aHTML5中文学习网 - HTML5先行者学习网
J7aHTML5中文学习网 - HTML5先行者学习网
try { J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread prepare01。。。:"+Thread.interrupted()); J7aHTML5中文学习网 - HTML5先行者学习网
clienThread=new Thread(){ J7aHTML5中文学习网 - HTML5先行者学习网
public void run() { J7aHTML5中文学习网 - HTML5先行者学习网
try { J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread prepare02。。。:"+Thread.interrupted()); J7aHTML5中文学习网 - HTML5先行者学习网
while (!Thread.interrupted()) { J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread starting。。。"); J7aHTML5中文学习网 - HTML5先行者学习网
MeApiCall meApiCall=new MeApiCallImpl(); J7aHTML5中文学习网 - HTML5先行者学习网
Me me=new Me(); J7aHTML5中文学习网 - HTML5先行者学习网
me.setMeEmail(et_register_account.getText().toString().trim()); J7aHTML5中文学习网 - HTML5先行者学习网
me.setMePwd(et_register_pwd.getText().toString().trim()); J7aHTML5中文学习网 - HTML5先行者学习网
me.setMeName(et_register_nickName.getText().toString().trim()); J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread data loaded。。。"); J7aHTML5中文学习网 - HTML5先行者学习网
meApiCall.register(me); J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread callback。。。"); J7aHTML5中文学习网 - HTML5先行者学习网
handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG); J7aHTML5中文学习网 - HTML5先行者学习网
clienThread.interrupt(); //中断线程 J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
} catch (InterruptedException e) { J7aHTML5中文学习网 - HTML5先行者学习网
// TODO: handle exception J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread is interrupt"); J7aHTML5中文学习网 - HTML5先行者学习网
}catch (Exception e) { J7aHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated catch block J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "exception: "+e.getMessage()); J7aHTML5中文学习网 - HTML5先行者学习网
handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG); J7aHTML5中文学习网 - HTML5先行者学习网
e.printStackTrace(); J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
}; J7aHTML5中文学习网 - HTML5先行者学习网
}; J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "progressDialog prepare01。。。:"); J7aHTML5中文学习网 - HTML5先行者学习网
progressDialog=ProgressDialog.show(Register.this, J7aHTML5中文学习网 - HTML5先行者学习网
"", J7aHTML5中文学习网 - HTML5先行者学习网
"正在获取....", J7aHTML5中文学习网 - HTML5先行者学习网
true, J7aHTML5中文学习网 - HTML5先行者学习网
true, J7aHTML5中文学习网 - HTML5先行者学习网
new DialogInterface.OnCancelListener() { J7aHTML5中文学习网 - HTML5先行者学习网
J7aHTML5中文学习网 - HTML5先行者学习网
@Override J7aHTML5中文学习网 - HTML5先行者学习网
public void onCancel(DialogInterface dialog) { J7aHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated method stub J7aHTML5中文学习网 - HTML5先行者学习网
J7aHTML5中文学习网 - HTML5先行者学习网
try { J7aHTML5中文学习网 - HTML5先行者学习网
clienThread.interrupt(); J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "interrupt is success!"); J7aHTML5中文学习网 - HTML5先行者学习网
} catch (Exception e) { J7aHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated catch block J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "interrupt is fail!"); J7aHTML5中文学习网 - HTML5先行者学习网
e.printStackTrace(); J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
); J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, "clientThread prepareing_end。。。"); J7aHTML5中文学习网 - HTML5先行者学习网
clienThread.start(); J7aHTML5中文学习网 - HTML5先行者学习网
//Log.v(TAG, "clientThread prepareing_end。。。"); J7aHTML5中文学习网 - HTML5先行者学习网
} catch (Exception e) { J7aHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated catch block J7aHTML5中文学习网 - HTML5先行者学习网
Log.v(TAG, e.getMessage()+" 00"); J7aHTML5中文学习网 - HTML5先行者学习网
e.printStackTrace(); J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
} J7aHTML5中文学习网 - HTML5先行者学习网
}); J7aHTML5中文学习网 - HTML5先行者学习网
J7aHTML5中文学习网 - HTML5先行者学习网希望本文所述对大家的Android程序设计有所帮助。J7aHTML5中文学习网 - HTML5先行者学习网