Android Runnable运行在哪个线程
来源:互联网 发布:厚积落叶听雨声知乎 编辑:程序博客网 时间:2024/03/29 18:03
The runnable will be run on the user interface thread. ”
boolean android.view.View .post(Runnable action)
Causes the Runnable to be added to the message queue. The runnable will be run on the user interface thread.
Parameters:
action The Runnable that will be executed.
Returns:
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.
我们可以通过handler的对象的post方法,把Runnable对象(一般是Runnable的子类)传过去,handler会在Looper中调用Runnable的run方法执行,Runnable是一个接口,不是一个线程,一般线程会实现Runnable接口
这里我们看代码handler.post(new Runnable(){好像是new了一个interface,其实是new一个实现Runnable的匿名内部类(Inner Anoymous Class)}) 这是一个简练的方法
Runnalbe是一个接口,不是一个线程,一般线程会实现Runnalbe接口,所以如果我们使用匿名内部类是运行在UI主线程的,如果我们使用实现这个Runnable接口的线程类,则是运行在对应的线程的。
具体来说这个函数的工作原理如下:
View.post(Runnalbe)方法,在post(Runanble action)方法中,View获得当前主线程(即UI线程)的handler,然后将action对象post到handler里面去,在Handler里,它将传递过来的action对象封装成一个Message(Message 的callback为action),然后将其投入到UI线程的消息循环中,在handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设,直接调用runnable的run方法,而此时,已经路由到UI线程里,因此我们可以毫无顾虑来更新UI。
如下图,前面看到的代码,我们这里的Message的callback为一个Runnalbe的匿名内部类,这种情况下,由于不是在新的线程中使用,所以千万别做复杂的计算逻辑。
- Android Runnable运行在哪个线程
- Android Runnable运行在哪个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Android Runnable 运行在那个线程
- Runnable运行在那个线程
- 解惑Android的post()方法究竟运行在哪个线程中
- 关于post()方法运行在哪个线程中
- android线程 message和runnable
- android线程 message和runnable
- Android线程:Message和Runnable
- android 线程:Message和Runnable
- Hbase源码研究(一)------put(1)
- jetty的log配置
- 最好用的UltraISO 9.5.3.2901中文完美注册破解版
- 鼠标三色光跟随效果
- 大端小端(Big- Endian和Little-Endian)
- Android Runnable运行在哪个线程
- Load-time relocation of shared libraries
- 如何开启Ubuntu 10.04的root用户和允许root用户登录
- GUI篇
- 显示鼠标坐标
- 今天被别人问了几个问题
- yield
- 多核时代的移动开发(一)-函数式编程思想到来
- 【OpenStack】OpenStack网络知识片断