android 只有主线程能更新UI

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

      解决的办法如下:

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

     

android 只有主线程能更新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     };
android 只有主线程能更新UI

       

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

         

android 只有主线程能更新UI
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();
android 只有主线程能更新UI

 

   

android 只有主线程能更新UI

上一篇:[分享] 关于App Store下载到一半发生错误的问题 [复制链接]


下一篇:基于Android平台的手机卫士效果图