加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Android 中断线程的解决

发布时间:2021-12-22 13:04:15 所属栏目:PHP教程 来源:互联网
导读:我先描述下我的问题: 我现在对一个用户注册的功能 1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog) 2.用一个线程clientThread执行数据的提交和返回 问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread

我先描述下我的问题:
 
我现在对一个用户注册的功能
 
1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)
 
2.用一个线程clientThread执行数据的提交和返回
 
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。
 
以下是我的代码,希望大家互相讨论,指出我的不足,最好能给出比较好的解决方案
 
好了不废话了,先贴代码!!
 
我还是把我btn_register的操作都贴上来好了
 
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();  
                    }  
                      
                      
                }  
                  
            }  
        });  
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读