Handle的简单用法

用惯了 java的 线程处理方法,在android上就碰壁了;

很自然的,首先会这样:

 

 public class MyThread implents Runable{
    public void run(){ 
 //
数据处理,界面更新
//
                     }    
                                                           }

这在android上面就碰壁了,究其原因就是android UI线程是线程不安全的。

每次系统只允许,其主线程绘制,刷新UI。

 

其实在android中提供了一个方便的实现方法,就是Handle,和AsyncTask(也是很方便的实现)。

Handle这个类是一个阻塞读取Message Quenu 的操作类。

而message Quenu就是一个进程里的 每个线程的交互数据池(或者叫做仓库)。

假如有一个线程需要刷新UI,那他发送的数据就发到了message Quenu,而UI线程可以通过Handle的定时操作去读取数据,从而更新UI

下面是用法:

 

 public Handler hancle=new Handler(){
        @Override
    public void handleMessage(Message msg) {  
        //*****
//*****    操作             
            super.handleMessage(msg);
        }
 };

 

在方法体内就可以实现需要操作UI线程的更新

而message对象可以传递两个比较重要的参数,一个是int 数值类型,一个是对象

如:

  Message ms= hancle.obtainMessage();
               ms.obj=object;

而在函数内就可以用:

switch(msg.what){

case 1:

//操作

Object o=msg.obj;

break;

case 2:

Object o=msg.obj;

break;

.......

}

来操作。

 

Handle还有一个可以定时的处理线程更新的方法,

就是创建完对象后,调用

handle.postDelayed(Runable run,long time);

run为需要循环执行的线程,而time是间隔,单位是毫秒。

 

那样就基本可以知道Handle使用了。

下篇讲解:AsyncTask

 

 

 

 

 

转载于:https://www.cnblogs.com/itaem/archive/2012/11/13/2767359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值