Android:暂停 OnTouchListener 以提高性能



我的ImageView上有一个OnTouchlistener,我感觉它不时会阻塞MainThread。我也运行了一些动画,日食有时会告诉我很多帧被跳过了。

我不需要跟踪每个 MotionEvent - 每 20-30 毫秒调用一次 onTouch 方法就足够了。

有没有办法设置这个?

我还想提一下,这个onTouchListener是在只处理此类触摸事件的特殊类中实现的;这意味着我可以使这个类扩展Thread。但是,如果我在 onTouch 方法的末尾放一个Thread.sleep(ms),这会解决问题吗?

如果这是

您想要完成的:

将字段long lastTime = -1添加到侦听器类,然后在onTouch(MotionEvent event)中添加:

if(lastTime < 0)
{
    lastTime = System.currentTimeMillis();
}
else
{
    if(System.currentTimeMillis() - lastTime < 30) //how much time you decide
    {
        return true; //ignore this event, but still treat it as handled
    }
    else
    {
        lastTime = System.currentTimeMillis();
    }
}
//your logic

通常,仅将onTouchListener添加到ImageView永远不会导致UI延迟,除非您对每个事件进行大量计算。如果是这种情况,我建议你也去其他地方寻找潜在的问题。

另外,beworker的建议非常好,不要打电话给Thread.Sleep()因为它会停止线程中的其他一切。

最新更新