Runnable 并不一定是新开一个线程,比如下面的调用方法就是运行在UI主线程中的:
@Override public void run()
Handler mHandler=new Handler();
mHandler.post(new Runnable(){@Override public void run()
{
// TODO Auto-generated method stub
}});
View.post(Runnable)方法。在post(Runnable action)方法里,View获得当前线程(即UI线程)的Handler,然后将
action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为
action),然后将其投入UI线程的消息循环中。在Handler再次处理该Message时,有一条分支(未解释的那条)就是
为它所设,直接调用runnable的run方法。而此时,已经路由到UI线程里,因此,我们可以毫无顾虑的来更新UI。
这种情况下,由于不是在新的线程中使用,所以千万别做复杂的计算逻辑。