如何实现Android 中断线程的处理
我现在对一个用户注册的功能
1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)
2.用一个线程clientThread执行数据的提交和返回
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。
以下是我的代码,希望大家互相讨论,指出我的不足,最好能给出比较好的解决方案
代码区:
原文转载安卓教程网:http://android.662p.com/thread-318-1-1.html
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();
}
}
}
});
如何实现Android 中断线程的处理的更多相关文章
- Android 中断线程的处理
我现在对一个用户注册的功能1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)2.用一个线程clientThread执行数据的提交和返回 问题:考虑 ...
- android操作线程各种方法解析
(一)刚开始学习android的时候我是这么写的 new Thread( new Runnable() { public void run() { myView.invalidate(); } }). ...
- Android UI线程和非UI线程
Android UI线程和非UI线程 UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程(main thread). 这个主线程负责向UI组件分发事件(包括绘制事件),也是在这 ...
- Android终止线程的方法
线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象.但有时run方法是永远不会结束的.例如在程序中使用线程进行So ...
- android 进程/线程管理(一)----消息机制的框架
一:android 进程和线程 进程是程序运行的一个实例.android通过4大主件,弱化了进程的概念,尤其是在app层面,基本不需要关系进程间的通信等问题. 但是程序的本质没有变,尤其是多任务系统, ...
- Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
- android 进程/线程管理(二)----关于线程的迷思
一:进程和线程的由来 进程是计算机科技发展的过程的产物. 最早计算机发明出来,是为了解决数学计算而发明的.每解决一个问题,就要打纸带,也就是打点. 后来人们发现可以批量的设置命令,由计算机读取这些命令 ...
- android 进程/线程管理(三)----Thread,Looper / HandlerThread / IntentService
Thread,Looper的组合是非常常见的组合方式. Looper可以是和线程绑定的,或者是main looper的一个引用. 下面看看具体app层的使用. 首先定义thread: package ...
- android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)
继续分析handler 和looper 先看看handler的 public void dispatchMessage(Message msg) { if (msg.callback != null) ...
随机推荐
- Android之Handler
1.Handler默认情况下与主线程处于同一线程 public class MainActivity extends Activity { private Button startButton = n ...
- 客户端获取服务端自定义类数据 z
客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...
- sublime 安装常用插件
1.先要安装Package Control ,ctr+` 打开控制台,复制安装脚本,脚本在https://packagecontrol.io/installation#st3获取. 2.安装插件,ct ...
- [ActionScript 3.0] AS3 绘制正四面体(线条)
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; im ...
- 山东省第五届ACM省赛
题目链接:http://acm.sdut.edu.cn/sdutoj/contest_show.php?contest_id=1449 相关总结:http://www.cnblogs.com/mcfl ...
- Mingyang.net:hibernate.hbm2ddl.auto配置详解【转】
原文地址:http://www.cnblogs.com/feilong3540717/archive/2011/12/19/2293038.html hibernate.cfg.xml 中hibern ...
- poj 3295 Tautology
点击打开链接 Tautology Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8127 Accepted: 3115 ...
- 图标的使用————JAVA——Swing
public class MyImageIcon extends JFrame{ public MyImageIcon() { JFrame jf=new JFrame(); ...
- dd 命令实时进度监控
dd脚本: #!/bin/sh if [ -d "${1}" ]; then echo "!mkdir" else } fi cd ${} name=`date ...
- JavaScript对象的创建总结
方式 缺点 优点 基于已有对象扩充属性和方法 不可重用,没有约束 无 工厂方法 检测不出是什么的实例 简单封装,可以传参 构造方法 每创建一个对象就有开辟存放方法的空间 能通过instanceof检测 ...