Andorid学习 View.post
来源:互联网 发布:王勇java 编辑:程序博客网 时间:2024/06/05 16:32
参考:
http://www.cnblogs.com/qingblog/archive/2012/08/08/2628245.html
Hanler.post , View.post 都可用来更新UI 两者差异
以下代码/在UI主线程中运行方法,不创建一个新进程,为什么在主线程中运行?与在子线程中运行区别?
Handler mHandler=new Handler();//不加Looper,则默认管理消息队列的为主线程Looper,也可这么写 (线程产生一个looper,用来管理这个线程的消息队列,传来的消息就在这个looper管理的消息队列中排队)* HandlerThread handlerThread = new HandlerThread("myHandlerThread");
* handlerThread.start();
* handler = new Handler(handlerThread.getLooper());
mHandler.post(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub
//匿名类,运行在UI主线程,所以千万别做复杂的计算逻辑 } });
我们可以通过调用handler的post方法,把Runnable对象(一般是Runnable的子类)传过去;handler会在looper中调用这个Runnable的Run方法执行。
Runnable是一个接口,不是一个线程,一般线程会实现Runnable。所以如果我们使用匿名内部类是运行在UI主线程的,如果我们使用实现这个Runnable接口的线程类,则是运行在对应线程的。
View.post(Runnable)
View.post(Runnable)方法。在post(Runnable action)方法里,View获得当前线程(即UI线程)的Handler,然后将action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为action),然后将其投入UI线程的消息循环中。在Handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设,直接调用runnable的run方法。而此时,已经路由到UI线程里,因此,我们可以毫无顾虑的来更新UI。如下图,前面看到的代码,我们这里Message的callback为一个Runnable的匿名内部类
这种情况下,由于不是在新的线程中使用,所以千万别做复杂的计算逻辑。
view.post和handle.post这两个方法差不多,都是在post方法中传入一个实现了Runnable接口的对象,在这个对象的run方法中实现
mButton.post(new Runnable()//这里用的是view的post方法,如果用Handler就是换成handler.post {//这里的内容将在主线程中显示 @Override public void run() { mTextView.setText("yes 获取到数据了~~~"); } });
0 0
- Andorid学习 View.post
- andorid:HTTP Post 代码
- Andorid view 绘制原理
- 学习andorid
- view.post()
- (总结)andorid 自定义View
- andorid 学习笔记
- Andorid学习笔记
- 准备学习andorid。
- Andorid ActionBar基础学习
- Andorid的LK学习
- andorid学习总结
- Andorid学习记录
- Andorid学习笔记
- andorid资源动画学习
- Andorid学习教程
- Andorid中View的绘制流程
- andorid 自定义View 命名空间 长话短说
- iOS 远程推送参考资料及自己遇到的问题
- SetupDiGetClassDevs SetupDiEnumDeviceInfo SetupDiGetDeviceRegistryProperty 枚举设备手机
- 新手有用的20个命令
- Saving HDU
- servlet的url处理
- Andorid学习 View.post
- 基于MPLAB X IDE配置位设置讲解
- maven打包__自留
- mysql查询的优化
- 谈游戏程序员如何适应需求变更
- CS1.6自定义游戏中的H菜单和设置菜单,增加一键买枪功能
- jmeter--jmeter使用入门
- Eclipse导出jar包
- CentOs搭建shadowsocks