簡體   English   中英

Android Java:每個帖子可運行一次以上的Runnable嗎? 后延遲

[英]Android Java: Runnable running more than once per post? PostDelayed

我制作了一個簡單的動畫,其中OnTouch動畫= true,否則= false。 我想將動畫設置為可運行格式,以便我可以控制動畫的運行速度,但是當我使用可運行格式時,它在延遲之前運行了約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個其他使用處理程序和handler2的可運行對象,它們似乎運行得很好。 我也與其他帖子在同一班級中發布了runnable。

Tl; dr:runnable運行50次,而不是每個postDelayed 1次。 wtf?

最后說明:我知道有很多與此相對相同的問題,但是我想知道是什么原因。 謝謝!

由於您沒有發布完整的代碼,因此我假設您是通過某種onTouchListener啟動“ walkData”“ Runnable”的。 與單擊偵聽器不同,觸摸列表器會快速連續被調用,直到您停止觸摸它們為止。

為了解決這個問題,在您的onTouch事件中,您需要檢查跑步者是否已經在跑步並且什么都不做,或者取消當前正在跑步的“ walkData”並開始一個新的跑步者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM