关于这个handler.post(Runnable r)这个方法,用过很多次,
看下源码,它到底是怎样处理的。
public final boolean post(Runnable r)
{
return sendMessageDelayed(getPostMessage(r), 0);
}看下getPostMessage(r)这个方法的源码,private static Message getPostMessage(Runnable r) {
Message m = Message.obtain();
m.callback = r;
return m;
}给message设置了回调,
然后,looper进行消息循环,进行消息的分发,public void dispatchMessage(Message msg) {
if (msg.callback != null) {
handleCallback(msg);
} else {
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
handleMessage(msg);
}
}如果回调不为空,handleCallback(msg) 找个方法就会执行,
private static void handleCallback(Message message) {
message.callback.run();
}<span style="font-family: Arial, Helvetica, sans-serif;">调用了run方法。</span>
本文深入解析了Android系统中Handler.post(Runnable)方法的工作机制,包括源码分析、消息队列处理流程及回调机制,帮助开发者更好地理解和使用此核心组件。
524

被折叠的 条评论
为什么被折叠?



