Android中Handler的作用和使用方法

Handler的基本概念

包含线程队列和消息队列,实现异步的消息处理机制,跟web开发的ajax有异曲同工之妙。

创建一个Handler对象:
Handler handler = new Handler();

将要执行的操作写在线程对象的run方法当中
Runnable updateThread = new Runnable(){
public void run(){
handler.postDelayed(updateThread,3000);
}
}
一个点击监听事件,在handler中添加要执行的线程
Class StartButtonListener implements OnClickListener{
public voidonClick(View v){
//调用Handler的post方法,将要执行的线程对象添加到队列中
handler.post(updateThread);
}
}
一个点击监听事件,在handler中把线程移除
Class EndButtonListerger implements OnClickListener(){
public void onClick(View v){
handler.removeCallBacks(updateThread);
}
}

2.使用Handler更新ProgressBar的方法
分别使用
updateBarHandler.post(updateThread);
updateBarHandler.sendMessage(msg);
传递线程和消息。
通过Handler的handleMessage()方法处理消息。

首先使用匿名内部类来复写Handler当中的handlerMessage方法,该方法用于接收消息
Handler updateBarHandler = new Handler(){
public void handleMessage(Message msg){
bar.setProgress(msg.arg1);
updateBarHandler.post(updateThread);
}
};
创建一个线程类,用于控制进度条的进度,该类使用匿名内部类的方式进行声明
Runnable updateThread = new Runnable(){
int i = 0;
public void run(){
i = i + 10;
Message msg = updateBarHandle.obtainMessage();
msg.arg1 = i;
try{
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrack();
}
//将msg对象加入到消息队列
updateBarHandler.sendMessage(msg);
if( i == 100){
updateBarHandler.removeCallbacks(updateThread);
}
}
}
点击按钮事件,加入队列,启动线程
class ButtonListener implements OnClickListener{
public void onClick(View v){
bar.setVisibility(View.VISIBLE);
//线程队列
updateBarHandler.post(updateThread);
}
}

**当使用
handler.post(new Runnable);
时Handler和Activity处于同一个线程当中,在同一个线程中调用run方法。
而使用
Thread t = new Thread(new Runnable());
t.start();
创建的线程和Activity处于不同的线程中**

原文来自

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值