Android动画滞后(两种方法之间有什么区别)

时间:2015-05-01 14:26:39

标签: android multithreading animation invalidation

我想为图像的动作制作动画。 我有两个不同的实现,第一个涉及两个方法并顺利运行,另一个只需要一个方法和滞后。我宁愿使用第二个,但无法弄清楚导致滞后的原因。 我不认为这是计算新位置的代码,因为它非常简单,并且两种方法几乎相同(为了更好的可读性,我删除了它)

这是第一个:

public void animateCircleMovement(final long duration) {

  // ...

  post(new Runnable() {
    @Override
    public void run() {
        animateStep();
    }
 });
}

public void animateStep() {

   // ...

  invalidate();
  if(curTime<endTime) {
    post(new Runnable() {
      @Override
      public void run() {
        animateStep();
      }
     });
  }
}

这是第二个

// ...
new Thread(new Runnable() {
  @Override
  public void run() {

  while(currTime<endTime){

  // ...

   postInvalidate();
 }
}).start();

为什么第二种实施会造成滞后?

编辑postInvalidate()方法

1 个答案:

答案 0 :(得分:0)

如果将Thread.Sleep(10)放入while循环,动画将顺利运行。