new Handler().post(new Runnalbe()... 分析
来源:互联网 发布:软件开发模式有几种 编辑:程序博客网 时间:2024/06/10 16:41
Handler是很灵活的一个类,当运行下面的代码时:
new Handler().post(new Runnalbe(){@Overridepublic void run(){ //do something}});
它内部干了些啥?!
找到它的源代码:
/** * Causes the Runnable r to be added to the message queue. * The runnable will be run on the thread to which this handler is * attached. * * @param r The Runnable that will be executed. * * @return Returns true if the Runnable was successfully placed in to the * message queue. Returns false on failure, usually because the * looper processing the message queue is exiting. */ public final boolean post(Runnable r) { return sendMessageDelayed(getPostMessage(r), 0); }
sendMessageDelayed(getPostMessage(r), 0)的含义是立即发送了一个消息,再来看getPostMessage(r)的定义:
private static Message getPostMessage(Runnable r) { Message m = Message.obtain(); m.callback = r; return m; }
原来这里将Runnable赋给了Message.callcack。
总结:Runnalbe()的代码执行在Handler定义的线程中。
1 0
- new Handler().post(new Runnalbe()... 分析
- new Handler().post(new Runnalbe()... 分析
- Handler.post(new Runnable(){})使用
- New Handler
- new Handler().obtainMessage().sendToTarget()过程分析
- 关于new-handler
- 关于new Handler().postDelayed()
- c++ new handler机制
- 关于new Handler().postDelayed()
- 关于new Handler().postDelayed()
- new Handler().postDelayed
- 关于new Handler().postDelayed()
- Handler new Handler()和new Handler(Looper.getMainLooper())的区别
- new Handler()和new Handler(Looper.getMainLooper())的使用区别
- 了解new-handler的行为
- 使用Handler时new失败
- new!
- new
- MediaCodec ES流
- Linux系统中xorg.conf文件简介
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第一课:什么是 ReactiveCocoa
- linux驱动开发—基于Device tree机制的驱动编写
- try catch finally 用法
- new Handler().post(new Runnalbe()... 分析
- bzoj 2242 [sdoi2011]计算器 (BSGS)
- JavaSE程序分析001 继承的小事情
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第二课:信号(Signal)的各种操作
- 响应式布局基础三:webapp布局
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第三课:
- 集群中通过外网8088端口访问不到
- POJ - 1256 Anagram
- poj 1751 Highways