今天学习了android.os.Handler 这个类,为了加强记忆,做下总结~
整体理解是话,可以把Handler理解为线程队列的管理者,队列里的线程将会被系统逐个取出运行,我们可以用Handler来操作这个队列里的线程~
//添加线程1
handler.post(thread1);
//延时1秒后添加线程1
handler.postDelayed(thread1,1000);
//清除线程1
handler.removeCallbacks(thread1);
/**监听器,内部类 */
class myOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start1:
Toast.makeText(DemoHandler.this, "线程1开始", Toast.LENGTH_SHORT).show();
//添加线程1
handler.post(thread1);
break;
case R.id.stop1:
Toast.makeText(DemoHandler.this, "线程1结束", Toast.LENGTH_SHORT).show();
//清除线程1
handler.removeCallbacks(thread1);
break;
default:
break;
}
}}
/**线程1,内部类 */
class updateThread1 implements Runnable{
@Override
public void run() {
//延时1秒后添加线程1
handler.postDelayed(thread1,1000);
//设置进度条1的值~
progressBar1.setProgress(progressBar1.getProgress()+step1);
//转向
if( progressBar1.getProgress()>=progressBar1.getMax() || progressBar1.getProgress()<=0)
step1=-step1;
}}
其中 thread1 是 updateThread1 的对象!
当开始按钮被按下时,handler 就会把 thread1 第一次添加到队列里,等待系统运行,运行时,thread1 这个线程执行了一些动作的同时,又使用handler把自己延时添加到队列里,
这样,thread1 这个线程就开始间隔1秒运行一次,直到 调用 handler 的 removeCallbacks 把这个线程清除~~~