2017-12-11 23 views
0

Android에서 간단한 애니메이션을 만들고 싶습니다. I는 셋업이 가이드 시리즈를 기본 자바 코드 따랐다 위해Android에서 thread.sleep (long millis)이 작동하지 않습니다.

https://www.youtube.com/watch?v=UH2OWnq7NQ4

프레임 레이트를 제어 할 수 있기를, I는 thread.sleep(500); 라인을 추가했다. 그러나이 줄은 빨간색으로 밑줄이 그어져 있는데, 위에 그려 있으면 :

Unhandled exception: java.lang.interruptedException 

내가 뭘 잘못하고 있니? 고맙습니다!

public class AnimationActivity extends SurfaceView implements Runnable { 

    Thread thread = null; 
    boolean canDraw = false; 

    Bitmap backgroundBlack; 
    Canvas canvas; 
    SurfaceHolder surfaceHolder; 

    public AnimationActivity(Context context) { 
     super(context); 
     surfaceHolder = getHolder(); 
     backgroundBlack = BitmapFactory.decodeResource(getResources(), R.drawable.background_black); 

    } 

    @Override 
    public void run() { 
     while (canDraw) { 
      if (!surfaceHolder.getSurface().isValid()) { 
       continue; 
      } 

      canvas = surfaceHolder.lockCanvas(); 
      canvas.drawBitmap(backgroundBlack,0,0, null); 

      //drawing stuff here 

      surfaceHolder.unlockCanvasAndPost(canvas); 

      thread.sleep(500) 
     } 
    } 

    public void pause() { 
     canDraw = false; 

     while (true) { 
      try { 
       thread.join(); 
       break; 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 

     thread = null; 
    } 

    public void resume() { 
     canDraw = true; 
     thread = new Thread(this); 
     thread.start(); 
    } 
} 

답변

1

는 "작동하지 않는"하지 않습니다 -하지만 (메소드 서명에서 예외 : InterruptedException를 throw) 당신이 너무 던져 선언해야 하나 해 InterruptedException을 던질 수도 있고, 당신이 그것을 잡을해야합니다

try { 
    Thread.sleep(500); 
} catch (InterruptedException e) { 
    e.printStackTrace(); 
} 

PS : sleep은 정적 메서드이며 정적 방법으로 호출해야합니다. thread.sleep 대신 Thread.sleep