Android应用程序中过多的触摸事件会导致运行速度变慢。

3
我正在编写一款需要接收触摸事件的Android游戏。我的问题是,每当用户在屏幕上拖动手指时,太多的触摸事件被发送到触摸事件处理程序(我认为它运行在单独的线程中),导致我的帧率急剧下降! 我应该如何最好地限制每秒处理的触摸事件数量呢?
例如,如果我的游戏以60帧/秒运行,我真的不需要每秒处理多于1个触摸事件。 我可以采取什么方式来做到这一点而不丢失任何信息(即关于用户上次在屏幕上触摸的位置的重要信息)吗?

可能是[为什么触摸事件会破坏我的Android帧率?](https://dev59.com/c3RA5IYBdhLWcg3w4iF_)的重复问题。 - richq
2个回答

3

我的猜测是不是触摸事件,而是对它们的处理。确保只处理你需要的事件类型(即down或move),并忽略其他事件。此外,如果事件发生时间不比存储的时间晚1秒,则可能需要存储时间并尽早退出事件。

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

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

0

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

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

您不想做的是出于任何原因阻止渲染线程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接