【问题标题】:Excessive number of touch events slows down Android app过多的触摸事件会降低 Android 应用程序的速度
【发布时间】:2010-02-26 23:13:32
【问题描述】:

我正在编写一个需要接收触摸事件的 Android 游戏。我的问题是,每当用户在屏幕上拖动手指时,都会有很多触摸事件被发送到触摸事件处理程序(我认为它作为一个单独的线程运行),以至于我的帧速率直线下降!限制每秒处理的触摸事件数量的最佳方法是什么?

例如,如果我的游戏以 60 fps 运行,我真的不应该需要每秒处理超过 1 个触摸事件。我是否可以这样做并且不会丢失任何信息(即有关用户最后触摸屏幕位置的重要信息)?

【问题讨论】:

标签: java android programming-languages


【解决方案1】:

我的猜测是不是触摸事件,而是对它们的处理。确保您只处理您需要的事件类型(即向下或移动)并忽略其他事件。此外,您可能希望存储一个时间并提前退出事件,如果它不比存储的时间多 1 秒。

public boolean onTouchEvent(MotionEvent event) {
    float x = event.getX();
    float y = event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:

【讨论】:

    【解决方案2】:

    请参阅this page 上的处理事件。即使您没有使用 GLSurfaceView,它仍然可能适用。

    我认为至少在具有图形加速功能的手机上(不要在模拟器上测试),您应该能够每秒处理至少 50 个触摸事件,而不会降低帧率;

    你不想做的是因为任何原因阻塞渲染线程。

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多