安卓消息机制报错 this message is already in use

he_good 发布于 2012/03/05 08:26
阅读 3K+
收藏 0
     Thread thread = new Thread(new Runnable(){ 

         public void run() 

         { 

             try{ 

                 Log.v("内部标记","启动"); 
                 Message msg = new Message(); 

                 msg.what=2;              

                 HeActivity.this.handler.sendMessage(msg); 

             }catch(Exception e) 

             { 

                 Log.v("线程内部错误","原因"+e.getMessage()); 

             } 

         } 
     }); 

       
   

             public void handleMessage(Message msg) 

             { 

                   
 
                 HeActivity.this.Request(); 
 
                 while(true){ 

                     if(HeActivity.this.resource!=null){ 

                         HeActivity.this.listView.setAdapter(mAdapter); 

                         HeActivity.this.loading.dismiss(); 

                           

                         break; 

                     } 

                 } 

             } 

       

     };  

这段代码为什么每次运行都有异常,提示this message is already in use.哪位老大帮我解决下。

加载中
0
LiangX
LiangX
可能的原因 :  A message posted to a Handler is "in use" until it's delivered to the other 
side, at which point it becomes "free" again. 
he_good
he_good
能写个实例吗?
0
he_good
he_good

能写个实例吗? 

0
LiangX
LiangX
HeActivity. this .resource 这个初始值是不是null ? 如果是null的话,那个while循环会不断的进行,那么当一个Message入队之后,如果HeActivity.this.resource 为null,你的Handler就不会处于空闲 
he_good
he_good
@LiangX : 好了 谢了,实际是在线程没加载前就super.findViewById了导致没正常获取控件,然后消息机制一赋值就导致程序出错退出了
LiangX
LiangX
@he_good : 你debug一下,跟一下这个变量
he_good
he_good
没有啊,这个虽然是一直循环,但是在resource为空之前是不发送消息的,如果一但不为null就发送同时跳出循环,实际只发一次,handler怎么处于不空闲?
返回顶部
顶部