前言:看了很多,大家都有自己的理解,但是距离我想要的本质还很远。
1.形式:new handler().post(new Runnable(){
public void run(){
view.setTextColor(Color.Green);
}
});
handler使用在线程间通信,它的工作原理是,线程1建立handler对象,线程2建立Message mes对象,往mes中填充数据中,handler.sendMessage(mes),将数据分发给队列,队列中有数据了在执行线程一时,对象的handler中的方法会接受handlerMessage(Message mes){}接收并且处理。
知道了handler的工作流程,那么handler.post(Runnable runnable);这个方法中参数类型是一个接口Runnable。
handler.message方法发送的是message对象,那么handler.post发送的自然是接口对象。
java特性,函数可以 作为参数传递,那么我们主线程就会接受到函数并且执行这个参数。
而在android中,非UI线程更新UI界面是会报异常的,所以就用它来更新UI界面。
关与参数是函数的使用:
它们本质上都是对象的传递,对象方法的调用。
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!");
}
});
}
}
用的时候再定义,是不是跟C回调函数一样,而在java中叫做回调接口。