过多的触摸事件减慢Android应用程序
问题描述:
我正在编写需要接收触摸事件的Android游戏。我的问题是,无论用户何时沿屏幕拖动手指,触发事件都会发送到touch事件处理程序(我认为它是作为一个单独的线程运行),导致帧速率直线下降!我可以限制每秒处理的触摸事件数量的最佳方式是什么?例如,如果我的游戏运行速度为60 fps,那么我实际上不需要每秒钟处理超过1个触摸事件。我能做到这一点吗?不会丢失任何信息(即关于用户最后触摸屏幕上的哪个位置的重要信息)?过多的触摸事件减慢Android应用程序
答
我的猜测是,它不是触摸事件,而是它们的处理。确保你只是处理你需要的事件类型(即下移或移动)而忽略其他事件。如果存储时间不超过1秒,您也可能想要存储时间并提前退出事件。
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
答
请参阅处理事件this page。即使你不使用GLSurfaceView,它仍然可能适用。至少在具有图形加速功能的手机上(不要在模拟器上测试它),我认为你应该能够每秒处理至少50个touchEvents,而不会降低帧率。
你不想做的是阻止渲染线程出于任何原因。
[为什么触摸事件会破坏我的Android帧速率?](http://stackoverflow.com/questions/792185/why-are-touch-events-destroying-my-android-framerate) – richq 2011-01-06 12:15:17