参考文章: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);