我已经实现了一个触发重复事件的按钮,同时仍按照此处的说明进行操作:
Button buttonDown = (Button) findViewById(R.id.buttonDown);
buttonDown.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN) {
move(SOUTH);
moveDirection = SOUTH;
mHandler.removeCallbacks(mUpdateTask);
mHandler.postAtTime(mUpdateTask, SystemClock.uptimeMillis() + 200);
} else if (action == MotionEvent.ACTION_UP) {
mHandler.removeCallbacks(mUpdateTask);
}
return false;
}
});
这完美无缺。我希望我的程序中的其他触发器也可以停止重复发生的事件。但是放置mHandler.removeCallbacks(mUpdateTask);
似乎不起作用。我做错了什么?
答案 0 :(得分:0)
通过在其自己的线程中调用mHandler.removeCallbacks(mUpdateTask);
解决问题:
Thread t = new Thread() {
public void run() {
mHandler.removeCallbacks(mUpdateTask);
}
};
t.setDaemon(true);
t.start();
这看起来非常低效,只需要一个新线程来进行此调用。