Android Java:Runnable每个帖子运行多次? PostDelayed

时间:2014-06-13 20:55:18

标签: java android runnable

我做了一个简单的动画,其中OnTouch的动画= true,else = false。我想在动画中设置动画,这样我就可以控制动画运行的速度,但是当我使用runnable时,它会在延迟之前运行大约50次(我用日志检查)。

final Runnable walkData = new Runnable()
{
    public void run(){
        try{    
        if(walkAnim==true)
            {
                ship1 = Bitmap.createBitmap(walkArray.get(walkNum),
                              0, 0, walkArray.get(walkNum).getWidth(), 
                              walkArray.get(walkNum).getHeight(), shipMatrix, true);
                walkNum++;
                if(walkNum>16)
                {
                    walkNum=0;
                }
            }
            if(walkAnim==false)
            {
                ship1 = Bitmap.createBitmap(shippick, 0, 0, shippick.getWidth(),
                        shippick.getHeight(), shipMatrix, true);
            }
            Log.d("TestTag", "#");
        handler3.postDelayed(this, 1000);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
};

我有2个其他runnables使用handler和handler2,它们似乎运行得很好。我将runnable发布在与其他帖子相同的iniatiton类中。

Tl; dr:runnable运行50次而不是每次postDelayed 1次。跆拳道?

最后说明:我知道有很多问题与此相关,但我想知道原因是什么。谢谢!

1 个答案:

答案 0 :(得分:0)

由于你没有发布完整代码,我假设你是从某种onTouchListener开始你的'walkData''Runnable'。与单击侦听器不同,触摸列表器会快速连续调用,直到您停止触摸它们为止。

为了解决这个问题,在onTouch事件中你需要检查跑步者是否已经在运行并且没有做任何事情,或者取消当前正在运行的'walkData'并开始一个新的。