我需要限制每秒处理的关键事件的数量。这个想法是,因为在我的应用程序中用户可以使用键盘。例如,当用户按住右导航按钮时。我不想处理每个事件,因为我的应用程序可能会陷入计算循环。然后强制关闭,出现等待对话框。
我想每秒处理 2,3 个事件,而其他只是忽略。所以我可以为应用程序和计算线程添加一点冷却时间。
有可能吗?我想我必须在我的关键监听器中使用一些计时器或简单的睡眠功能,但我想不出正确的方法来做到这一点。
任何的想法?
我需要限制每秒处理的关键事件的数量。这个想法是,因为在我的应用程序中用户可以使用键盘。例如,当用户按住右导航按钮时。我不想处理每个事件,因为我的应用程序可能会陷入计算循环。然后强制关闭,出现等待对话框。
我想每秒处理 2,3 个事件,而其他只是忽略。所以我可以为应用程序和计算线程添加一点冷却时间。
有可能吗?我想我必须在我的关键监听器中使用一些计时器或简单的睡眠功能,但我想不出正确的方法来做到这一点。
任何的想法?
一个简单的解决方案是在您收到关键事件时进行一些时间比较:
// a variable in your class:
private long mPreviousKeyEventTime = 0;
// in the key event handling function:
if(System.currentTimeMillis() - mPreviousKeyEventTime < 300) return;
mPreviousKeyEventTime = System.currentTimeMillis();
300 是以毫秒为单位的时间 - 根据您的需要更改它。
编辑:如果键盘也用于打字,则仅在导航时进行这些限制。