广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android中断线程的处理方法

    2018-05-03 14:17:30 次阅读 稿源:互联网
    广告

    本文实例讲述了Android中断线程的处理方法。分享给大家供大家参考。具体方法如下:

    我现在对一个用户注册的功能
    1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)
    2.用一个线程clientThread执行数据的提交和返回

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

    代码如下,感兴趣的朋友可以参考运行一下,以便得出更好的解决办法。

    代码如下:

    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(); 
                    } 
                } 
            } 
        }); 

    希望本文所述对大家的Android程序设计有所帮助。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告