热门标签 | 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.         });  

推荐阅读
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Java能否直接通过HTTP将字节流绕过HEAP写入SD卡? ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
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社区 版权所有