我的问题是:我使用 Handler.postDelayed() 在 500 毫秒后运行动画。稍后在代码中我使用 Handler.removeCallbacksAndMessages() 因为有时我想运行另一个动画。问题是有时第一个动画开始但没有完成,我认为这是同步问题。
有没有办法检查是否启动了给 postDelayed() 的 Runnable,在这种情况下取消 removeCallbacksAndMessages()?
如果这个 Runnable 中的 run() 被启动,removeCallbacksAndMessages 有什么效果吗?
代码是这样的:
Handler hand = new Handler();
if (counter==2) {
one = (ImageView) findViewById(img_id);
two = im;
hand.postDelayed(new Runnable() {
public void run() {
applyAnim(0, 90, one, false);
applyAnim(0, 90, two, false);
counter = 0;
}
}, 750);
} else (counter == 3) {
im.setClickable(false);
hand.removeCallbacksAndMessages(null);
counter = 1;
applyScndAnim(0, 90, one, false);
applyScndAnim(0, 90, two, false);
}