Handler基本概念:
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而
另外一个部分逐个的在消息队列中将消息取出,然后对消息进行处理,就是发送消息和接收消息不是同步的处理。
这种机制通常用来处理相对耗时比较长的操作。
分两个例子来熟悉 1、简单的Handler使用 2、Handler 操作进度条
示例 1
步骤:1 新建android应用程序
2 添加布局文件,并在其中添加两个按钮,按钮1 开始操作,按钮2结束操作
3 在Activity中创建Handler对象
Handler handler = new Handler();
4 在Activity中以匿名内部类的方式创建Runnable 对象,
把要执行的操作写在Runnable对象的run方法中
Runnable runable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Runnable");
handler.postDelayed(runable, 2000);//延时2秒执行
}
};
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Runnable");
handler.postDelayed(runable, 2000);//延时2秒执行
}
};
5 在Activity中 绑定按钮1 的监听事件,在这个监听器的onClick方法中调用
Handler对象的post方法,把要执行的线程对象(Runnable)放入到队列中。
btnButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.post(runable);
}
});
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.post(runable);
}
});
6 在Activity中 绑定按钮2 的监听事件,在这个监听器的onClick方法中调用
Handler对象的 removeCallbacks 方法 ,把执行的线程移除队列。
btnButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.removeCallbacks(runable);
}
});
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.removeCallbacks(runable);
}
});