看下源碼就很清楚了,view.post(Runnable)內部實際仍是使用的handler.post(Runnable),而這個方法,內部會執行下面的方法,從而把Runnable設置爲Message.callback,實際上至關於handler.sendMessage(),只是發送了一個消息,
private static Message getPostMessage(Runnable r) {
Message m = Message.obtain();
m.callback = r;
return m;
}
handler.dispatch()的時候,會調用下面的方法
message.callback.run();
就是直接調用的Runnable的run方法,並非strat(),因此僅僅是當作一個有run()的普通類使用而已,並非開啓了一個新的線程
看下源碼就很清楚了,view.post(Runnable)內部實際仍是使用的handler.post(Runnable),而這個方法,內部會執行下面的方法,從而把Runnable設置爲Message.callback,實際上至關於handler.sendMessage(),只是發送了一個消息,
private static Message getPostMessage(Runnable r) {
Message m = Message.obtain();
m.callback = r;
return m;
}
handler.dispatch()的時候,會調用下面的方法
message.callback.run();
就是直接調用的Runnable的run方法,並非strat(),因此僅僅是當作一個有run()的普通類使用而已,並非開啓了一個新的線程
|