有两个使用方法,一个是新建一个对象new Message,另一个是使用Handler.obtainMessage(),这里说明两者之间的不同
第一种,new对象;
没得说,就是创建一个对象
第二种,调用Handler的方法,
我们查看obtainMessage()源码:
可以看到是从loop中取出来的
也就是从Messge池中返回一个新的Message实例,这样的好处是避免再创建对象,提高可用性
继续我们的代码编写,我要写一个计时器
其中重要代码是
public void onClick(View v) {
switch (v.getId()) {
case R.id.gettime:
time.setText(inputet.getText().toString()); // time用于显示
i = Integer.parseInt(inputet.getText().toString()); // 用于保存显示的值
break;
case R.id.starttime:
startTime();
break;
case R.id.stoptime:
stopTime();
break;
default:
break;
}
}
// 对页面进行UI操作
private Handler mHandler = new Handler() {
// 更新主UI
public void handleMessage(Message msg) {
switch (msg.what) {
case aa:
time.setText(msg.arg1 + "");
startTime();
break;
}
}
};
public void startTime() {
timer = new Timer();
task = new TimerTask() {
@Override
public void run() {
i--;
Message message = mHandler.obtainMessage();
message.what = aa;
message.arg1 = i;
mHandler.sendMessage(message);
}
};
timer.schedule(task,1000);
}
public void stopTime() {
timer.cancel();
}
我们对