子线程利用handler更新主UI的两种方式

(1)使用handler的sendMessage(Message对象)方法

(2)使用handler的post(Runnable对象)方法

class A implements Runnable{
       public void run(){
          Message msg = handler.obtainMessage();//线程池获取Message对象
          handler.sendMessage(msg); //1
          handler.post(undateUIRunnable );//2
          handler.postDelayed(undateUIRunnable ,time);//3
          handler.postAtTime(undateUIRunnable ,time);//4
     }
}
private Handler handler = new Handler(){
   public void handlerMessage(android.os.Message msg){
        switch(msg.what){
                case://undateUI
                case://undateUI
       }
  }
}
Runnable undateUIRunnable = new Runnable(){
public void run(){
       //undate UI
}
}

1、创建类A实现Runnable接口,然后利用A的对象来创建一个子线程new thread(new A()),然后调用start()便是启动子线程:new thread(new A()).start();

2、子线程利用handler传递信息到主线程更新UI。可以使用handler的这几个函数(1、2、3、4)来更新UI,也可以直接这样

handler.post(new  Runnable(){

     //undateUI

})

也就是直接使用匿名对象的方式。其实创建线程也可以直接使用匿名对象的方式



你可能感兴趣的:(子线程利用handler更新主UI的两种方式)