Android 安卓:暂停监听以获得性能

Android 安卓:暂停监听以获得性能,android,multithreading,ontouchlistener,Android,Multithreading,Ontouchlistener,我的ImageView上有一个OnTouchlistener,我感觉它不时会阻塞主线程。我还运行了一些动画,eclipse有时会告诉我跳过了很多帧 我不需要跟踪每个MotionEvent——每20-30毫秒调用一次onTouch方法就足够了 有没有办法设定这个 我还想提到,这个onTouchListener是在一个特殊的类中实现的,该类只处理此类触摸事件;这意味着我可以让这个类扩展线程。但是,如果我在onTouch方法的末尾添加一个线程.sleep(ms),这能解决问题吗?如果这是您想要实现的:

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

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

有没有办法设定这个


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

如果这是您想要实现的:

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

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
if(上次<0)
{
lastTime=System.currentTimeMillis();
}
其他的
{
if(System.currentTimeMillis()-lastTime<30)//您决定用多长时间
{
return true;//忽略此事件,但仍将其视为已处理
}
其他的
{
lastTime=System.currentTimeMillis();
}
}
//你的逻辑
通常,仅向ImageView添加onTouchListener不会导致UI中的延迟,除非您对每个事件进行大量计算。如果是这样的话,我建议你也去别处寻找潜在的问题

另外,beworker的建议非常好,不要调用
Thread.Sleep()
,因为它会停止线程中的所有其他内容