[英]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.