您的位置:首页 > 移动开发 > Android开发

Android按钮屏蔽计时器(handler+TimerTask)

2013-01-30 10:16 531 查看
  在Android应用中,遇到多次点击按钮导致的重复提交订单的问题。该问题有两种解决方案,一是后台对近似时间的订单进行过滤,二则在应用层面避免重复点击按钮。

  这里,我们通过handler+TimerTask计时器结合实现屏蔽按钮2秒的功能:

View Code

TimerTask task ;
Timer timer;

timer = new Timer(true);

soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100);
loadId = soundPool.load(context, R.raw.zero, 1);
loadId1 = soundPool.load(context, R.raw.one, 2);
loadId2 = soundPool.load(context, R.raw.two, 3);
loadId3 = soundPool.load(context, R.raw.three, 4);
loadId4 = soundPool.load(context, R.raw.four, 5);
loadId5 = soundPool.load(context, R.raw.five, 4);
loadId6 = soundPool.load(context, R.raw.six, 3);
loadId7 = soundPool.load(context, R.raw.seven, 2);
loadId8 = soundPool.load(context, R.raw.eight, 1);
loadId9 = soundPool.load(context, R.raw.nine, 1);

}

Handler buttonhandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
nextbutton.setEnabled(true);
button1.setEnabled(true);
button2.setEnabled(true);
button3.setEnabled(true);
button4.setEnabled(true);
button5.setEnabled(true);
button6.setEnabled(true);
break;
}
super.handleMessage(msg);
}
};

nextbutton.setEnabled(false);
buttonhide(nextbutton);

private void buttonhide(Button b){
b.setEnabled(false);

if (task != null){
task.cancel();  //将原任务从队列中移除      \
}
task = new TimerTask(){
public void run() {
Message message = new Message();
message.what = 1;
buttonhandler.sendMessage(message);
}
};
timer.schedule(task,2000); //延时1000ms后执行,1000ms执行一次
}


http://blog.csdn.net/andych008/article/details/7802032

/article/5665542.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: