这几天在看android的Handler和Looper的用法,需然以前对于这两者的用法我已经很清楚了,但今天我本着深入了解的态度去关于两者的源代码。果不其然,里面真是大有文章啊,让我学到了很多东西,刻不容缓,于是马上写博客记录下来。。。(看来以后要多看点源代码咯~~~·)。
在例子开始前,我们来看一下google API对两者的解释:
先来看一下Looper这个类:
再来看一下handler这个类的google给出的解释:
简单的来说:大家可以这样来理解,有一个消息队列MessageQueue
(队列应该大家都知道了吧。。。。。),我们handler要做的工作就是将一个Message对象都到这个消息队列和负责处理从被消息队列拿出来的Message,那么谁负责遍历和拿取消息队列内的消息给handler呢?没错,这些遍历和拿取的工作就是Looper来完成的。好了,下面来看一下我写的例子(如果有大神飘过的话,别见怪。。别见怪。。。)
先来看一下整个项目的搭构:
其中的布局文件main.xml里面很简单,久一个TextView和一个Button。(不信的话。。。。。我也不给你看)
好了,现在我们来看一下activity里面的代码
public class HLActivity extends Activity {
/** Called when the activity is first created. */
private TextView textView=null;
private Button btn=null;
//private Handler handler=null;
public static int i=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initralWeight();
/*handler=new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
textView.setText("当前点击运行线程的次数为"+msg.arg1);
}
};*/
}
private class BtnListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TestThread tt=new TestThread();
T