热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android中断线程的处理

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

我先描述下我的问题:

我现在对一个用户注册的功能

1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)

2.用一个线程clientThread执行数据的提交和返回

问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。

以下是我的代码,希望大家互相讨论,指出我的不足,最好能给出比较好的解决方案

好了不废话了,先贴代码!!

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

  1. btn_register.setOnClickListener(new View.OnClickListener() {  
  2.               
  3.             @Override  
  4.             public void onClick(View v) {  
  5.                 // TODO Auto-generated method stub   
  6.                 if(doBeforeSubmit()){  
  7.           
  8.                     try {  
  9.                         Log.v(TAG, "clientThread prepare01。。。:"+Thread.interrupted());  
  10.                         clienThread=new Thread(){  
  11.                             public void run() {  
  12.                                 try {  
  13.                                     Log.v(TAG, "clientThread prepare02。。。:"+Thread.interrupted());  
  14.                                     while (!Thread.interrupted()) {  
  15.                                         Log.v(TAG, "clientThread starting。。。");  
  16.                                         MeApiCall meApiCall=new MeApiCallImpl();  
  17.                                         Me me=new Me();  
  18.                                         me.setMeEmail(et_register_account.getText().toString().trim());  
  19.                                         me.setMePwd(et_register_pwd.getText().toString().trim());  
  20.                                         me.setMeName(et_register_nickName.getText().toString().trim());                                       
  21.                                           
  22.                                         Log.v(TAG, "clientThread data loaded。。。");                                        
  23.                                         meApiCall.register(me);  
  24.                                         Log.v(TAG, "clientThread callback。。。");  
  25.                                       
  26.                                         handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG);  
  27.                                       
  28.                                           
  29.                                        clienThread.interrupt();   //中断线程   
  30.                                     }  
  31.                                 } catch (InterruptedException e) {  
  32.                                     // TODO: handle exception   
  33.                                     Log.v(TAG, "clientThread is interrupt");  
  34.                                 }catch (Exception e) {  
  35.                                     // TODO Auto-generated catch block   
  36.                                     Log.v(TAG, "exception: "+e.getMessage());  
  37.                                     handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG);  
  38.                                     e.printStackTrace();  
  39.                                 }  
  40.                             };  
  41.   
  42.                         };  
  43.                         Log.v(TAG, "progressDialog prepare01。。。:");  
  44.                         progressDialog=ProgressDialog.show(Register.this,   
  45.                                                            "",   
  46.                                                            "正在获取....",   
  47.                                                            true,   
  48.                                                            true,  
  49.                                                            new DialogInterface.OnCancelListener() {  
  50.                                                               
  51.                                                             @Override  
  52.                                                             public void onCancel(DialogInterface dialog) {  
  53.                                                                 // TODO Auto-generated method stub   
  54.                                                                   
  55.                                                                     try {  
  56.                                                                         clienThread.interrupt();  
  57.                                                                         Log.v(TAG, "interrupt is success!");  
  58.                                                                     } catch (Exception e) {  
  59.                                                                         // TODO Auto-generated catch block   
  60.                                                                         Log.v(TAG, "interrupt is fail!");  
  61.                                                                         e.printStackTrace();  
  62.                                                                     }  
  63.                                                               
  64.                                                             }  
  65.                                                         }  
  66.                                                           );  
  67.                         Log.v(TAG, "clientThread prepareing_end。。。");  
  68.                         clienThread.start();  
  69.                         //Log.v(TAG, "clientThread prepareing_end。。。");   
  70.                     } catch (Exception e) {  
  71.                         // TODO Auto-generated catch block   
  72.                         Log.v(TAG, e.getMessage()+" 00");  
  73.                         e.printStackTrace();  
  74.                     }  
  75.                       
  76.                       
  77.                 }  
  78.                   
  79.             }  
  80.         });  

推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • c语言基础编写,c语言 基础
    本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
author-avatar
晰mine
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有