zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android中断线程的处理方法

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程序设计有所帮助。