xichao1980

导航

更新UI方法

1.Handler

见前一篇。

2.Activity.runOnUiThread(Runnable)

Activity类的方法。如果当前线程为ui线程,则立即执行;否则,将参数中的线程操作放入到ui线程的事件队列中,等待执行。

Activity.this. runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // refresh ui 的操作代码
    }
}); 

相对于Handler轻量,方便。

3.View.post(Runnable)

将操作放入到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,则均存在潜在的内存泄漏的问题! 

 

posted on 2014-03-19 17:45  xichao1980  阅读(236)  评论(0编辑  收藏  举报