Android中断线程的处理方法
2023-06-13 09:15:30 时间
本文实例讲述了Android中断线程的处理方法。分享给大家供大家参考。具体方法如下:
我现在对一个用户注册的功能
1.用ProgressDialog将当前页面设成不可操作(保留返回键退出ProgressDialog)
2.用一个线程clientThread执行数据的提交和返回
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。
代码如下,感兴趣的朋友可以参考运行一下,以便得出更好的解决办法。
btn_register.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(doBeforeSubmit()){
try{
Log.v(TAG,"clientThreadprepare01。。。:"+Thread.interrupted());
clienThread=newThread(){
publicvoidrun(){
try{
Log.v(TAG,"clientThreadprepare02。。。:"+Thread.interrupted());
while(!Thread.interrupted()){
Log.v(TAG,"clientThreadstarting。。。");
MeApiCallmeApiCall=newMeApiCallImpl();
Meme=newMe();
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,"clientThreaddataloaded。。。");
meApiCall.register(me);
Log.v(TAG,"clientThreadcallback。。。");
handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG);
clienThread.interrupt(); //中断线程
}
}catch(InterruptedExceptione){
//TODO:handleexception
Log.v(TAG,"clientThreadisinterrupt");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
Log.v(TAG,"exception:"+e.getMessage());
handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG);
e.printStackTrace();
}
};
};
Log.v(TAG,"progressDialogprepare01。。。:");
progressDialog=ProgressDialog.show(Register.this,
"",
"正在获取....",
true,
true,
newDialogInterface.OnCancelListener(){
@Override
publicvoidonCancel(DialogInterfacedialog){
//TODOAuto-generatedmethodstub
try{
clienThread.interrupt();
Log.v(TAG,"interruptissuccess!");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
Log.v(TAG,"interruptisfail!");
e.printStackTrace();
}
}
}
);
Log.v(TAG,"clientThreadprepareing_end。。。");
clienThread.start();
//Log.v(TAG,"clientThreadprepareing_end。。。");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
Log.v(TAG,e.getMessage()+"00");
e.printStackTrace();
}
}
}
});
希望本文所述对大家的Android程序设计有所帮助。
相关文章
- android acitivity 跳转到fragment,android Activity跳转到指定的Fragment
- android okio使用方法,Android 开源框架 Okio 原理剖析「建议收藏」
- android 读取本地数据库db文件(Android sqlite)
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- Android FFmpeg系列07--音画同步
- 分歧还是共存?详解Android内核安全
- android toast全屏,Android Toast实现全屏显示
- Android angle_android 界面悬停
- android studio 导入第三方库的记录
- 【Android 电量优化】电量优化 ( JobScheduler | JobService | AsyncTask )
- 【Android 异步操作】线程池 ( 线程池 execute 方法源码解析 )
- 【Android 异步操作】Handler 机制 ( Android 提供的 Handler 源码解析 | Handler 构造与消息分发 | MessageQueue 消息队列相关方法 )
- 【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留类及成员混淆结果 | 保留注解以及被注解修饰的类/成员/方法 )
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- 【Android Gradle 插件】Android 依赖管理 ① ( 依赖库匹配 | 依赖库查找顺序及路径 | Gradle 资源库 )
- Android File Transfer for mac(强大的安卓文件传输工具)
- Android Studio SDK 下工具的路径和作用
- Android测量View宽和高的一般通用方法详解手机开发
- 跟App相关的Android辅助类详解编程语言
- Android控件系列之EditText使用方法
- Android源码学习之工厂方法模式应用及优势介绍
- Android开机自启动服务的实现方法
- android耳机左右声道接反具体修正方法
- Android获取屏幕高度,标题高度,状态栏高度(实例代码)
- android打开rar压缩文件
- Android开发中避免应用无响应的方法(ApplicationNotResponding、ANR)
- Android中检查、监听电量和充电状态的方法
- Android实现授权访问网页的方法
- Android获取手机号码和运营商信息的方法
- Android上使用ZXing识别条形码与二维码的方法