android 只有主线程能更新UI

  如果新建一个Thread,那么不能在这个Thread中直接更新UI,因为只有主线程才能更新UI。

      解决的办法如下:

     1, 在Activity中声明一个Handller变量,重写HandleMessage(Message msg)函数,在函数内更新UI

     

1 Handler handler= new Handler(){
2     @Override
3     public void handleMessage(Message msg){
4         TextView myTextView=(TextView )findViewById(R.id.MyTextView);
5         myTextView.setText("Button Pressed");
6     }
7     };

       

    2,在新建的Thread线程中,handler.sendEmptyMessage(0); 这样会回调 handler的handleMessage函数

         

Runnable runnable=  new Runnable() {
            public void run() {
                
                long endTime=System.currentTimeMillis()+20*1000;
                while (System.currentTimeMillis()<endTime) 
                {
                    synchronized (this) {
                        try {
                               wait(endTime - System.currentTimeMillis());
                             } catch (Exception e) {
                            }
                        }
                    
                    handler.sendEmptyMessage(0);
                }
            }
        } ;
        
        
        Thread thread=new Thread(runnable);
        thread.start();

 

   

posted on 2014-02-19 14:49  小白说我是2B  阅读(481)  评论(0编辑  收藏  举报

导航