IntraWeb开发学习笔记(一)
2010-12-10 10:13
197 查看
1.handler.send(Message message),或者handler.post (Runnable r);
2.View.post(Runnable r);
[/code]
本文出自 “小鸟学C变大鹏” 博客,请务必保留此出处http://vincenttung.blog.51cto.com/6249439/1143761
2.View.post(Runnable r);
/** * 更新UI方法之 view.post(Runnable r) * @author vincentTung * */ class ViewPostThread extends Thread{ @Override public void run() { super.run(); while(count<101){ /** * view.post(Runnable) */ bar.post(new Runnable() { @Override public void run() { isChanging = true; bar.setProgress(count); count++; }}); /** * view.postDelayed(Runnable,delayTime) */ // bar.postDelayed(new Runnable() { // // @Override // public void run() { // isChanging = true; // bar.setProgress(count); // count++; // // }},100); // try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } 3.Activity的RunOnUIThread(Runnable r); [code]class ViewPostThread extends Thread{ @Override public void run() { super.run(); while(count<101){ runOnUiThread(new Runnable() { @Override public void run() { isChanging = true; bar.setProgress(count); count++; }}); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } 4.通过HandlerThread进行更新/** * * * 更新UI方法之 * ---- HandlerThread * * HandlerThread与普通Thread的区别是,普通Thread 默认不带Looper的, * 需要调用Looper.prepare()方法为线程分配出有一个Looper,然后通过Looper.loop()方法让Looper转起来,循环分发消息Message * 而HandlerThread就可以看作是默认就非配有Looper的线程Thread * 1.在子线程中声明Handler * 2.在子线程的run()方法中:Looper.prepare();//为子线程分配一个Looper * 3.在子线程的run()方法中:处理操作,并发送Message * 4.在子线程的run()方法中: Looper.loop();//让Loop转起来 * * @author vincentTung * */ private HandlerThread handlerThread =new HandlerThread("handler_thread"){ private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { count++; bar.setProgress(count); if(count==100){ Toast.makeText(HandlerThreadTest.this, "Done", 1).show(); } }; }; 使用时候调用 handlerThread.start();5.在子线程中更新,前提是得Loop.prepare( ); /** * * * 更新UI方法之 * ---- 带Looper的子线程 * 1.在子线程中声明Handler * 2.在子线程的run()方法中:Looper.prepare();//为子线程分配一个Looper * 3.在子线程的run()方法中:处理操作,并发送Message * 4.在子线程的run()方法中: Looper.loop();//让Loop转起来 * * @author vincentTung * */ class NormalThread extends Thread{ private int count=0; private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { count++; bar.setProgress(count); };}; @Override public void run() { super.run(); Looper.prepare(); while(count<=100){ handler.sendEmptyMessage(0); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } Looper.loop(); } }
[/code]
本文出自 “小鸟学C变大鹏” 博客,请务必保留此出处http://vincenttung.blog.51cto.com/6249439/1143761
相关文章推荐
- IntraWeb开发学习笔记(二)
- IntraWeb开发学习笔记(三)
- PHP学习笔记——搭建PHP开发环境---阿冬专栏
- ASP.NET控件开发学习笔记--第5回 HtmlTextWriter的相关枚举
- Kinect开发学习笔记之(一)Kinect介绍和应用
- Dango Web 开发指南 学习笔记 2
- Asp.net控件开发学习笔记(九)----服务器控件事件
- spss C# 二次开发 学习笔记(五)——Spss系统集成模式
- Xcode 实战开发学习笔记 之调试应用程序两个有用的命令
- Hadoop学习笔记(4) ——搭建开发环境及编写Hello World
- 敏捷开发学习笔记——用户故事与多职能团队
- iOS开发学习笔记(一)
- Android开发学习笔记(十二) 获取系统可用内存
- ODL开发学习笔记@北邮-Kobe
- 【Cocos2d-X开发学习笔记】第19期:动作管理类(CCActionManager)的使用
- 【C语言学习笔记】函数及多文件开发
- 【Cocos2d-X开发学习笔记】第24期:事件处理机制之加速度传感器事件
- 【jQuery学习笔记----jQuery插件开发】
- 【Cocos2d-X开发学习笔记】第04期:渲染框架之场景类(CCScene)的使用
- openfire 插件开发学习笔记