关于handle.post(Runnable r)方法的理解

前言:看了很多,大家都有自己的理解,但是距离我想要的本质还很远。

1.形式:new handler().post(new Runnable(){

public void run(){

view.setTextColor(Color.Green);

}

});

  1. handler使用在线程间通信,它的工作原理是,线程1建立handler对象,线程2建立Message mes对象,往mes中填充数据中,handler.sendMessage(mes),将数据分发给队列,队列中有数据了在执行线程一时,对象的handler中的方法会接受handlerMessage(Message mes){}接收并且处理。

  1. 知道了handler的工作流程,那么handler.post(Runnable runnable);这个方法中参数类型是一个接口Runnable。

  1. handler.message方法发送的是message对象,那么handler.post发送的自然是接口对象。

  1. java特性,函数可以 作为参数传递,那么我们主线程就会接受到函数并且执行这个参数。

  1. 而在android中,非UI线程更新UI界面是会报异常的,所以就用它来更新UI界面。

  1. 关与参数是函数的使用:

它们本质上都是对象的传递,对象方法的调用。

public class test{
private Runnable runnable=null;
interface Runnable{
public void run();
}
public test(Runnable runable){
this.runnable=runable;
runnable.run();
}
public static void main(String[] args){
test mytest=new test(new Runnable(){
public void run(){
System.out.println("This is a test fou runnable!");
}  
});
}
}
  1. 用的时候再定义,是不是跟C回调函数一样,而在java中叫做回调接口。

你可能感兴趣的:(java)