thread.sleep(long millis)在 Android 中不起作用

thread.sleep(long millis) doesn't work in Android

我想在Android中做一个简单的动画。我按照本系列教程设置了基本 java 代码:

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

为了能够控制帧率,我添加了行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();
    }
}

它不是 "not working" - 但它可能会抛出一个 InterruptedException,您也必须声明抛出(在方法签名中抛出 InterruptedException),或者您应该捕获它:

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

PS:sleep是一个静态方法,应该以静态方式调用:Thread.sleep而不是thread.sleep