嗨我正在使用Timer类来获取功能,如果用户按下键盘上的左或右箭头键(键盘连接到Android设备)它将显示一个在屏幕上查看(将其设为 VISIBLE )。如果在接下来的5秒内没有输入(向左或向右箭头按下),视图将消失。
我用来使查看成为 GONE 的代码:
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT || keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
Log.i(PLAYER_ACTIVITY_TAG, "Left/right pressed ");
meciaControlTimer.cancel();
if (keyTimer == null) {
keyTimer = new Timer();
keyTimer.schedule(new TimerTask() {
@Override
public void run() {
EventBus.getDefault().post(new HideEvent());
Log.i(PLAYER_ACTIVITY_TAG, "Hide fired - Left/Right key was not pressed in past 5 sec");
}
}, 5000);
} else {
Log.i(PLAYER_ACTIVITY_TAG, "Canceling the key timer!");
keyTimer.cancel();
keyTimer = null;
}
}
问题: 我观察到如果我在短时间内(几秒钟)做出15-20个键输入(左/右箭头) EventBus (我在android中使用此类而不是广播)将永远不会被触发,视图仍然可见,直到我进行新输入并在另一个输入之间稍等(1-2秒)。
有人可以告诉我我做错了什么或解释我这个Timer发生了什么,为什么会这样?
由于