Android View.post(Runnable )的作用
来源:互联网 发布:移动有3g网络吗 编辑:程序博客网 时间:2024/05/20 11:48
Runnable 并不一定是新开一个线程,比如下面的调用方法就是运行在UI主线程中的:
Handler mHandler=new Handler(); mHandler.post(new Runnable(){ @Override public void run(){ // TODO Auto-generated method stub } });
官方对这个方法的解释如下,注意其中的:“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. Therunnable 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 themessage queue. Returns false on failure, usually because the looperprocessing the message queue is exiting.
我们可以通过调用handler的post方法,把Runnable对象(一般是Runnable的子类)传过去;handler会在looper中调用这个Runnable的Run方法执行。
Runnable是一个接口,不是一个线程,一般线程会实现Runnable。所以如果我们使用匿名内部类是运行在UI主线程的,如果我们使用实现这个Runnable接口的线程类,则是运行在对应线程的。
具体来说,这个函数的工作原理如下:
View.post(Runnable)方法。在post(Runnableaction)方法里,View获得当前线程(即UI线程)的Handler,然后将action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为action),然后将其投入UI线程的消息循环中。在Handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设,直接调用runnable的run方法。而此时,已经路由到UI线程里,因此,我们可以毫无顾虑的来更新UI。
如下图,前面看到的代码,我们这里Message的callback为一个Runnable的匿名内部类
这种情况下,由于不是在新的线程中使用,所以千万别做复杂的计算逻辑。
- Android View.post(Runnable )的作用
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- Android View.post(Runnable )
- 关于Android View.post(Runnable ) 的使用
- 转:Android View.post(Runnable )
- Android 开发之 View.post() 的作用
- Android从源码分析handler.post(runnable),view.post(runnable),runOnUiThread(runnable)执行时机
- View.post(Runnable) ;View.postDelay(Runnable , long)
- 第二周
- 最小生成树 prim算法
- tomcat 6.0配置
- TFTP文件传输代码注解
- 混沌循环移位加密图像
- Android View.post(Runnable )的作用
- AfxBeginThread的基本用法_自我学习
- eclipse中查看java包的源代码
- 慢慢的,其实我们已经长大了
- 经典指针越界问题
- Android中Drawable Bitmap Canvas Paint之间区别
- qsort()应用大全
- git快速拾取
- 一个不错的XML+Javascript树状菜单