startButton.setOnClickListener(new StartListener());
endButton = (Button)findViewById(R.id.end);
endButton.setOnClickListener(new EndListener());
}
class StartListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
handler.post(HandlerThread);
}
}
class EndListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
handler.removeCallbacks(HandlerThread);
}
}
Runnable HandlerThread = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("HandlerThread is Running......");
handler.postDelayed(HandlerThread, 3000);
}
};
}
我们可以看到,在Activity中对两个按钮分别绑定了事件监听器,还创建了Handler的一个实例,以及创建了一个匿名内部类,是一个实现Runnable接口的线程HandlerThread。
当start按钮按下时,即会执行handler.post(HandlerThread);这一句代码,之前说过,Handler用一个线程队列,这句代码即是把HandlerThread这个线程加入了handler的线程队列中,因为加入的这个HandlerThread是第一个线程,因此它会马上执行它的run()方法。在run()方法中,handler.postDelayed(HandlerThread, 3000);又再一次将HandlerThread放入handler的线程队列中,这里设置了3000ms的延迟。这样,整个程序会不断地运行,且每隔3000ms在LogCat中打印出"HandlerThread is Running......"。










