如何实现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) ...
随机推荐
- python抓取百度百科点赞数等动态数据
利用selenium 模拟浏览器打开页面,加载后抓取数据 #!/usr/bin/env python # coding=utf-8 import urllib2 import re from bs4 ...
- [ActionScript3.0] 传递任意数量的参数
function setAgument(a:int,...rest):void{ for(var i:int=0;i<rest.length;i++){ trace(rest[i]); }}se ...
- 反人类的MyEclipse之-eclipse设置花括号换行显示
http://www.cnblogs.com/zhwl/archive/2012/12/17/2821806.html 习惯了C的代码风格,用Eclipse的风格,实在是看得卵子痛.尤其是大括号放在最 ...
- Java SE 第二十三讲----static关键字and final关键字
1.static关键字 [在二十二讲视频中30分钟开始讲授] 2.static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量:一个对象对该静态成员变量进行了修改,其他 ...
- 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
首先导入jar包 上面的jar包主要是用来将map或list数据转换成json字符串,传递到前台使用. 静态页面的代码:2.html <!DOCTYPE html> <html> ...
- Mac OS X安装Redis
http://my.oschina.net/jackieyeah/blog/524583
- [技巧]如何清除VS2008的最近打开项目
)删除最近打开的文件 运行regedit,打开HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\FileMRUList 之后,在右边删除相应键 ...
- SAP
http://www.itpub.net/thread-1328005-1-1.html http://blog.sina.com.cn/s/blog_4b75f26e0100b52a.html SA ...
- (easy)LeetCode 219.Contains Duplicate II
Given an array of integers and an integer k, find out whether there there are two distinct indices i ...
- iOS 模态视图
模态视图不是专门的某个类,而是通过视图控制器的presentViewController方法弹出的视图,我们称为模态视图. 模态视图出现的场景一般是临时弹出的窗口,譬如:登录窗口: 模态视图弹出时通过 ...