-1

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

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

有没有办法设置这个?

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

4

1 回答 1

1

如果这是你想要完成的:

将字段添加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(),因为它会停止线程中的其他内容。

于 2013-11-08T18:51:02.243 回答