Java 即使在构造函数上使用setWillNotDraw(false),也不会调用RelativeLayout onDraw

Java 即使在构造函数上使用setWillNotDraw(false),也不会调用RelativeLayout onDraw,java,android,Java,Android,我从RelativeLayout创建了一个子类,当我调用invalidate方法时,他没有调用OnDraw方法,下面是我的代码: handler = new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what == GameGlobals.UpdateDraw){ gameHandler.inval

我从RelativeLayout创建了一个子类,当我调用invalidate方法时,他没有调用OnDraw方法,下面是我的代码:

        handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if(msg.what == GameGlobals.UpdateDraw){
                gameHandler.invalidate();
            }
            super.handleMessage(msg);
        }
    };

                    Button btt_start = (Button)findViewById(R.id.btt_start);

    btt_start.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

                setContentView(gameHandler);//The sub class from RelativeLayout

                try {
                    gameHandler.setup(handler);
                } catch (Exception e) {
                    showAlert(e.getMessage());
                }

                Thread thread = new Thread(gameHandler);
                thread.run();
        }
    });
现在是子类:

    //this method is called int the three constructors
    private void setup(){
    setWillNotDraw(false);
}

        @Override//from Runnable
public void run() {
    Message msg = new Message();
    msg.what = GameGlobals.UpdateLogic;
    handler.sendMessage(msg);

    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

        @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.save();

    canvas.drawText("testing..", 90, 90, textInfo);

    canvas.restore();
}

好的,就这些,我已经调试了代码,我看到的是:onDraw方法只被调用了两次:当它被创建时,然后当invalidate方法第一次被调用时,仅此而已,他不会一直调用invalidate,这是一个线程!方法运行在那里,为什么他不再被调用??我将感谢您的帮助

您的run()方法中没有循环。。因此,它会触发一次invalidate调用,休眠10毫秒,然后退出

乌欧。是的,我忘记了这一点,现在“run”上的循环工作了,但是“draw”方法没有被调用,应用程序被困在一个循环中,导致它在短时间后崩溃,他甚至没有离开活动的当前COntentView