免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1462 | 回复: 0
打印 上一主题 下一主题

android学习----Handler使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-19 12:40 |只看该作者 |倒序浏览
转:candycaicai  

android学习----Handler使用

         接触android的应用开发已经有一个多月了,对于控件的使用,比较容易掌握,通过xml配置布局,在主程序中建立对应的控件,设置监听,完成用户动作,我说的也只是入门级的水平,本人也是入门级菜鸟,哈哈!对我而言,初学的难度在于handler的使用上,所以在这里详细介绍一下!

         Handler从字面上看就是一个句柄,用于负责发送和处理相应消息,它包括两种队列:线程队列和消息队列,分别通过post和sendmessage来实现。

        使用Handler的流程:

1、创建Handler对象,可以直接使使用Handler无参构造函数,创建对象,也可以继承handler类,重写HandlerMessage函数,然后创建Handler对象。
  1. Handler handler = new Handler(){
  2.     public void handleMessage(Message msg) {

  3.       //执行方法
  4.         }
  5. };
复制代码
2、建立Runable对象,复写run方法,run方法中是将要执行的操作。
  1. Runnable mThread = new Runnable() {
  2.         int i = 0;
  3.         @Override
  4.         public void run() {
  5.             // TODO Auto-generated method stub

  6.             //执行方法
  7.         }
  8.     };
复制代码
3、在监听入口中,调用Handler的post或者postDelayed方法,将要执行的线程对象(Runable对象)加入到线程队列中。也可以用sendMessage发送消息,处理消息的地方就是复写的HandlerMessage里。可以通过obtainMessage,获取消息,传递参数。

handler.post(mThread);

或者

Message msg = handler.obtainMessage();
msg.arg1 = i;

handler.sendMessage(msg);

想要线程停止,可以调用Handler对象的removecallbacks(Runable r)从线程队列中移除线程对象。

注意:线程对象和消息对象分别对应线程队列和消息队列,处理也是分成了post和SendMessage两种,要加以区分。

            Handler分发Message对象和Runable对象到主线程,每个handler实例都会绑定到创建他的线程中。

ps:我也看书和自己练习总结的,可能有说的不清楚的地方!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP