android 子线程向主线程发送消息

时间:2022-10-25 18:28:35

参考文章:http://blog.csdn.net/olanmomo/article/details/40040569
http://gqdy365.iteye.com/blog/2112471
http://www.jb51.net/article/59976.htm

1.利用Looper.getMainLooper()方法获得一个主线程的Looper,通过抓线程的looper实例一个主线程的handler

new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {

}
});

2.利用runInMainThread(runable)方法

new Thread(){
@Override
public void run() {
super.run();
//子线程
runOnMainThread(new Runnable() {
@Override
public void run() {
//主线程
}
});
}
}.start();

3 . 利用view或handler的post()和postDelay()方法。子线程如果持有某个View的引用,要对该View进行更新,则可调用该View对象的post(Runnable r)或postDelay(Runnable r)方法;Handler对象也有post()方法。其实在Android的源码中,这些post()方法都是借助下面的第3种方法:Handler + Message来实现的。

new Handler().post(new Runnable() {
@Override
public void run() {

}
});
new Handler().post(new Runnable() {
@Override
public void run() {

}
});
view.postDelayed(new Runnable() {
@Override
public void run() {

}
},1000);
view.postDelayed(new Runnable() {
@Override
public void run() {

}
},1000);