Android中Timer类的奇怪行为

时间:2017-09-04 11:38:32

标签: android view timer

嗨我正在使用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发生了什么,为什么会这样?

由于

0 个答案:

没有答案