1.Handler
见前一篇。
2.Activity.runOnUiThread(Runnable)
Activity类的方法。如果当前线程为ui线程,则立即执行;否则,将参数中的线程操作放入到ui线程的事件队列中,等待执行。
1
2
3
4
5
6 |
Activity. this . runOnUiThread( new
Runnable() { @Override public
void run() { // refresh ui 的操作代码 } }); |
相对于Handler轻量,方便。
将操作放入到message队列中,如果放入成功,该操作将会在ui线程中执行,并返回true,否则返回false。
在Post(Runnable action)方法里,View获得当前线程(即UI线程)的Handler,然后将action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为action),然后将其投入UI线程的消息循环中。在Handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设,直接调用runnable的run方法。而此时,已经路由到UI线程里,因此,我们可以毫无顾虑的来更新UI。
4.View.postDelayed(Runnable, long)
同上,加了个delay而已。
3和4中,如果view没有被attach,则均存在潜在的内存泄漏的问题!
原文:http://www.cnblogs.com/xichao/p/3611964.html