Android 中断线程的处理
我现在对一个用户注册的功能
1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)
2.用一个线程clientThread执行数据的提交和返回
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。
以下是我的代码,希望大家互相讨论,指出我的不足,最好能给出比较好的解决方案
代码区:
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 异步加载图片大家可以看安卓教程网吧:http://android.662p.com/thread-316-1-1.html
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实现 服务器功能
package com.weijia.tests; import java.io.IOException; import java.net.InetSocketAddress; import java ...
- Python基础09 面向对象的进一步拓展
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们熟悉了对象和类的基本概念.我们将进一步拓展,以便能实际运用对象和类. 调用类的 ...
- windows service的继承类ServiceBase
https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicebase.exitcode(v=vs.80).aspx 在停 ...
- oracle10g如何配置客户端
http://jingyan.baidu.com/article/4d58d541c108939dd4e9c0f5.html 不行的话: 对tnsnames.ora进行编辑:ORCL = (DESCR ...
- 在UEFI下安装windows和Ubuntu双系统目前不可行
UEFI是BIOS的升级,未来将取代BIOS,说白了,就是跟BISO差不多的作用.但是目前比较新的主板兼容两种设置就比较坑了,默认是UEFI,UEFI下只能安装win8以上的版本,和linux64位系 ...
- Servlet中的配置 web.xml
url-pattern配置 可以为同一个Servlet配置多个url-pattern: <servlet> <servlet-name>DoGetPostDemo</se ...
- Gradle简介
gradle跟ant/maven一样,是一种依赖管理/自动化构建工具.但是跟ant/maven不一样,它并没有使用xml语言,而是采用了Groovy语言,这使得它更加简洁.灵活,更加强大的是,grad ...
- esriSRProjCS3Type Constants
ArcGIS Developer Help (Geometry) esriSRProjCS3Type Constants See Also esriSRProjCSType Constants ...
- [SQL]获取所有数据库名、获取数据库中表名、获取表中的字段名
--()获取所有数据库名: Select Name FROM Master..SysDatabases order by Name --()获取所有表名 --XType=''U'':表示所有用户表; ...
- CodeForces 604C 【思维水题】`
题意: 给你01字符串的长度再给你一个串. 然后你可以在这个串中选择一个起点和一个终点使得这个连续区间内所有的位取反. 求: 经过处理后最多会得到多少次01变换. 例如:0101是4次,0001是2次 ...